PHP数组到jQuery - gmaps.js没有创建标记

时间:2015-12-25 20:01:05

标签: php jquery gmaps.js

我试图使用PHP数组从数据库获取long和lat值,并使用gmaps.js将它们放到地图上。

到目前为止,我已经在PHP中创建了数组,并将其回显到我的页面上以确认正在显示正确的值。

[user@manjaro hw9]$ javac * 
[user@manjaro hw9]$ java Hw9
Error: Could not find or load main class Hw9

所以$ data是数组,里面有我想要的值。

然后我想使用jQuery从json编码中获取数据,将它们放入地图标记位置并显示标记,如下所示:

$data = array();
$data['latitude'] = array($lat);
$data['longitude'] = array($lng);
echo json_encode($data);

我的控制台没有错误(使用firefox和firebug),地图显示但没有显示标记。

2 个答案:

答案 0 :(得分:1)

我不认为你的代码实际上正在做你认为它正在做的事情。请参阅this fiddle了解您的循环实际发生的情况。

如果在PHP端存储数组的方式不同,那么在JS中循环遍历多个标记会更容易。另外,我认为gmaps.js在对象中不需要额外的“标记”键。

新PHP

$data = array();
$data[] = array(
  'latitude' => $lat
  ,'longitude' => $long
);
echo json_encode($data);

新JS

var poi_markers = []; // make sure you declare this before using it. if you already declare it somewhere else, don't use this line
$.ajax({
    type: "POST",
    url: "phppage.php",
    dataType: "JSON",
    success: function(data) {
        $.each(data, function(key, value) {
            var poi_marker = {
                lat: value.latitude,
                lng: value.longitude
            }
            poi_markers.push(poi_marker);
        });

        map.addMarkers(poi_markers);
    }
});

您可能遇到问题,因为您指定了dataType: "JSON"但是(至少在您发布的代码中)您没有更改php端的标头。您可能需要将此行添加到phppage.php

的顶部
header("Content-Type: application/json", true);

Where I learned everything I know about gmaps.js

答案 1 :(得分:0)

我认为根据需要成功检索数据

$.ajax({
    type: "POST",
    url: "phppage.php",
    dataType: "JSON",
    success: function(data) {
        $.each(data, function(key, value) {
            map.addMarker{
                lat: data.latitude,
                lng: data.longitude
            }
        }  
    }     
});

Check This