【发布时间】:2018-12-26 21:36:58
【问题描述】:
我正在使用 google maps javascript api,并尝试在用户单击 div 时更新热图。传入热图中的经纬度数据来自本地 json 文件。目前,我可以让我的网页加载地图,并且热图叠加层正确显示。问题是当我点击一个 div 并期望热图数据得到更新时,热图就消失了。通过我的调试,我发现当我在点击监听器中运行getPoints(file) 时,我的getPoints(file) 方法中的$.ajax 调用被跳过。有谁知道可能出了什么问题?这是我的代码:
var map, heatmap;
function initMap() {
var sanFran = {
lat: 37.775299,
lng: -122.432432
}
map = new google.maps.Map(document.getElementById('Map'), {
zoom: 10,
center: sanFran,
});
heatmap = new google.maps.visualization.HeatmapLayer({
data: getPoints("2016-07-02--11-56-24.json"),
map: map
});
};
function getPoints(file) {
retArr = [];
var weblink = "http://localhost:8080/trips/" + file;
$.ajax({
url: weblink,
dataType:"json",
success:function(data){
for(var i = 0; i< data.coords.length; i++){
console.log(data.coords[i]);
retArr.push(new google.maps.LatLng(data.coords[i].lat, data.coords[i].lng))
}
}
});
return retArr;
}
$.each(jsTrips,function(k,v){
$("#"+k).on("click",function(){
heatmap.set('data', getPoints(v));
})
})
json数据格式如下:
{
"start_time":some time,
"coords": [{lat,long},{lat,long},{lat,long}],
"end time":some time
}
如果需要更多详细信息,请告诉我,我会更新问题。
谢谢!!!
【问题讨论】:
-
您是否将
$.each...代码行放在$(dociment).ready..中。如果你没有,可能是Div点击没有得到绑定。尝试将整个代码放入$(document).ready函数中。 -
是的,DOM 响应了点击事件,我在调试时遇到了 getPoints() 中的断点,所以我认为这不是问题
-
由于 ajax 是异步的,因此您的函数可能会在 ajax 完成您在热图上设置的成功(空白数组)回调之前返回
-
好的,很好。现在我可以建议您检查网络选项卡是否将您的请求发送到服务器。还可以尝试添加
error回调,就像成功一样。让我知道,以便我可以帮助进一步调试。
标签: javascript json ajax google-maps