我试图使用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),地图显示但没有显示标记。
答案 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);
答案 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
}
}
}
});