【问题标题】:Retrieving latitude and longitude from mysql, passing it to google maps api从mysql中检索经纬度,将其传递给google maps api
【发布时间】:2014-06-15 23:07:19
【问题描述】:

我是一个完整的初学者,只是想知道是否有一个简单的方法是将这些位置传递给我的 HTML 脚本中的谷歌地图。

我可以像这样很好地检索坐标

PHP(这可行):

<?php
require_once "sql.php";

error_reporting(E_ALL ^ E_NOTICE);
ini_set('display_errors','On');

    $result = array();
    $result['success'] = false;

    $order_by = $_REQUEST['sort_by'];

    $query = "SELECT venue_name, latitude, longitude, id  FROM venues";
        if ($result_set = Sql::query($query)) {
            $result['success'] = true;
            $result['message'] = "All Venues" ;
            $rows = mysqli_num_rows($result_set);
            $result['rows'] = array();
            for ($i = 0; $i<$rows; $i++) {
                $tmpRow = mysqli_fetch_assoc($result_set);
                $result['rows'][$i] = $tmpRow;
            }
        } else {
             $result['message'] = "Failed to read Cafes" ;
        }

        print(json_encode($result)); 

JQuery(单独的 .js 的一部分,这是可行的):

function success_get_locations(response) {
if(response.success) {
    var cafe_loc = '';
    for (var i = 0; i < response.rows.length; i++) {
        var venue_name = response.rows[i].venue_name;
        var venue_lat = response.rows[i].latitude;
        var venue_long = response.rows[i].longitude;
        var id = response.rows[i].id;

        cafe_loc += venue_name + venue_lat + venue_long + id; 
    }
}

}

我只需要知道如何将这些位置从我的 JQuery 中的 function success_locations() 添加到我的 HTML 中的谷歌地图 var locations []

<div id="map" style="width: 500px; height: 400px;"></div>

<script type="text/javascript">

var locations = [
  ['Bondi Beach', -33.890542, 151.274856, 4],
  ['Coogee Beach', -33.923036, 151.259052, 5],
  ['Cronulla Beach', -34.028249, 151.157507, 3],
  ['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
  ['Maroubra Beach', -33.950198, 151.259302, 1]
];

var map = new google.maps.Map(document.getElementById('map'), {
  zoom: 10,
  center: new google.maps.LatLng(-33.92, 151.25),
  mapTypeId: google.maps.MapTypeId.ROADMAP
});

var infowindow = new google.maps.InfoWindow();

var marker, i;

for (i = 0; i < locations.length; i++) {  
  marker = new google.maps.Marker({
    position: new google.maps.LatLng(locations[i][1], locations[i][2]),
    map: map
  });

  google.maps.event.addListener(marker, 'click', (function(marker, i) {
    return function() {
      infowindow.setContent(locations[i][0]);
      infowindow.open(map, marker);
    }
  })(marker, i));
}
</script>

谢谢 詹姆斯

【问题讨论】:

标签: javascript php jquery google-maps


【解决方案1】:

这一点没有多大意义:

    cafe_loc += venue_name + venue_lat + venue_long + id; 

您正在获取漂亮的结果数组,将位吸出到单个变量中,然后将它们全部连接成一个大字符串。例如对于 JS 代码中的示例位置,您实际上是在构建

Bondi Beach-33.890542151.2748564

为什么不将它们保留为它们已经存在的数组?或者,如果数组的顺序不正确,您可以使用正确顺序的元素构建一个 NEW 数组:

locs_for_google = [];
for (var i = 0; i < response.rows.length; i++) {
   locs_for_google[i] = [
       response.rows[i].venue_name,
       response.rows[i].latitude,
       response.rows[i].longitude,
       response.rows[i].id
   ];
}

【讨论】:

  • 啊,是的,我很乐意保持原样!那么如何将locs_for_google 传递给html 中的地图脚本呢?我需要先将它传递给 .js 文件中的全局变量吗?干杯
  • 如果您不需要通过 ajax 动态更新列表,那么只需将您的 PHP 数组转储到 js 块中,例如var locs_for_google = &lt;?php echo json_encode($locs_from_db); ?&gt;;.
  • 谢谢,这真的很有帮助。理想情况下,它将使用 ajax 动态更新,最简单的方法是什么?
  • 差不多。在页面生成时将您的初始列表直接转储到 js 块中。然后使用 ajax 调用来获取更新的列表。那么它就像$.get(......, function(data) { locs_for_google = data; }); 一样简单。
  • 嗯,我明白了。我知道的比昨天多一点,非常感谢。
猜你喜欢
  • 1970-01-01
  • 2012-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
相关资源
最近更新 更多