我目前正在开发一个网络应用程序,该应用程序每 10 秒更新一次谷歌地图标记。我从数据库获取经纬度坐标,然后将它们加载到这样的对象中:
然后我发出ajax请求
var da = JSON.parse(data);
然后循环遍历所有结果:
$.each(da, function(idx, obj) {
var latLng = new google.maps.LatLng(obj.Lat, obj.Longitude);
markers[obj] = new google.maps.Marker({position: latLng,map: map});
});
但稍后在代码中我尝试执行此操作时遇到问题:
markers[obj].setPosition(latLng);
它没有将标记移动到新位置,我错过了什么吗?
“markers[]”对象是全局声明的。
最佳答案
在每个循环内,markers[obj]
应该是 markers[idx]
。
在循环之外,改变
标记[obj].setPosition(latLng);
- 到
标记[idx].setPosition(latLng);
假设您在第二个循环中有该行,并像以前一样命名该循环的第一个参数idx
您的代码
$.each(da, function(idx, obj) {
var latLng = new google.maps.LatLng(obj.Lat, obj.Longitude);
markers[obj] = new google.maps.Marker({position: latLng,map: map});
});
......
markers[obj].setPosition(latLng);
建议更改
$.each(da, function(idx, obj) {
var latLng = new google.maps.LatLng(obj.Lat, obj.Longitude);
markers[idx] = new google.maps.Marker({position: latLng,map: map});
});
......
markers[idx].setPosition(latLng);
关于javascript - JQuery 和 Google map API 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27680744/