我有一堆存储在 MySQL 中的纬度和经度标记,我可以用 PHP 简单地检索它们。我使用 Javascript 与 Google maps API v3 交互,并在数组中加载几个标记作为虚拟对象,每个标记也有一个信息窗口。
人们会推荐什么作为将 MySQL 中的数据传递给 javascript 对象/数组以与 google maps api v3 一起使用的最佳方法。
我有一堆存储在 MySQL 中的纬度和经度标记,我可以用 PHP 简单地检索它们。我使用 Javascript 与 Google maps API v3 交互,并在数组中加载几个标记作为虚拟对象,每个标记也有一个信息窗口。
人们会推荐什么作为将 MySQL 中的数据传递给 javascript 对象/数组以与 google maps api v3 一起使用的最佳方法。
通过使用 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));
}
上面的代码将为地图中的每个标记提供多个标记以及信息框。
如果你有一个包含很多标记的 PhP 数组,例如:
Array
(
[0] => Array
(
["lat"]=> <value>
["lng"]=> <value>
["info"]=> <value>
)
[1] => Array
(
["lat"]=> <value>
["lng"]=> <value>
["info"]=> <value>
)
[2] => ...
[3] => ...
)
使用 JSON 是一个很好的解决方案:
要将数组从 PhP 转换为 JSON:
json_encode($myMarkersArray, JSON_NUMERIC_CHECK)