【问题标题】:Passing Map Location information from PHP to javascript for use with Google maps v3 api将地图位置信息从 PHP 传递到 javascript 以与 Google maps v3 api 一起使用
【发布时间】:2013-07-30 10:33:14
【问题描述】:

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

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

【问题讨论】:

    标签: php javascript google-maps-api-3


    【解决方案1】:

    使用 PHP while 循环从 DB 中获取值并将值存储在变量中,如下所示

    $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));
    }
    

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

    【讨论】:

    • 我更喜欢将我的 javascript 放在标题中,因此这似乎是一种奇怪的方法。
    • 您可以使用 AJAX 从 PHP 获取 DB 值并将值加载到 Javascript 变量位置。
    【解决方案2】:

    如果你有一个包含很多标记的 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-27
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      • 2012-06-10
      相关资源
      最近更新 更多