1

我有一堆存储在 MySQL 中的纬度和经度标记,我可以用 PHP 简单地检索它们。我使用 Javascript 与 Google maps API v3 交互,并在数组中加载几个标记作为虚拟对象,每个标记也有一个信息窗口。

人们会推荐什么作为将 MySQL 中的数据传递给 javascript 对象/数组以与 google maps api v3 一起使用的最佳方法。

4

2 回答 2

0

通过使用 PHP while 循环从数据库中获取值并将值存储在一个变量中,如下所示

$location .= '['. $row['latitude'] . ',' . $row['longitude'] . ',"' . $row['city'] . '","' . $row['state'] . '"],' ;

在 Javascript 中,将 PHP 变量分配给 Javascript 变量,如下所示。

var locations = [<?php echo isset($location)?$location:''; ?>];
var len = locations.length;
for (i = 0; i < len; i++) {  
   var image = 'GIVE HERE THE PATH OF IMAGE';
   marker = new google.maps.Marker({
     position: new google.maps.LatLng(locations[i][1], locations[i][2]),
     map: map,
     icon: image
   });
   google.maps.event.addListener(marker, 'mouseover', (function(marker, i) {
     return function() {              
    infowindow.setContent(content);
    infowindow.open(map, marker);
 }
   })(marker, i));
}

上面的代码将为地图中的每个标记提供多个标记以及信息框。

于 2013-07-30T10:43:48.863 回答
0

如果你有一个包含很多标记的 PhP 数组,例如:

Array
(
    [0] => Array
           (
           ["lat"]=> <value>
           ["lng"]=> <value>
           ["info"]=> <value>
           )
    [1] => Array
           (
           ["lat"]=> <value>
           ["lng"]=> <value>
           ["info"]=> <value>
           )
    [2] => ...
    [3] => ...
)

使用 JSON 是一个很好的解决方案:

  1. 它将为您省去转义存储在其中的值的麻烦
  2. 您可以轻松地在 javascript 中检索相同的数据结构(如果需要,使用 JSON.parse())并使用它创建您的标记。

要将数组从 PhP 转换为 JSON:

json_encode($myMarkersArray, JSON_NUMERIC_CHECK)
于 2013-07-30T11:45:14.120 回答