[英]Google Map API doesn't refresh markers correctly
我正在尝试使用Ajax在Google地图上实时显示多个标记。 Ajax从Web服务函数中获取标记数组,如下所示。 当数组具有1或2个坐标索引时,刷新工作正常。 但是,如果数组具有两个以上的坐标,则问题开始。
例如,如果我要在数组中标记3个点,例如[[23,32],[45,34],[34,34]],那么我的代码将这些点显示在地图上。 然后,如果我更改显示选项,则数组函数将删除其中之一,例如[[23,32],[34,34]],因此,地图上应仅显示两个标记,但地图上仍显示三个标记。 我真的不知道是什么原因导致了问题。 有谁知道如何解决这个问题?
function initMap() {
var center1 = { lat: 33.9636, lng: -84.1191 };
var bounds = new google.maps.LatLngBounds();
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: center1
});
var marker = new google.maps.Marker({});
setInterval(function () {
$.ajax({
type: "POST",
url: "WebService.asmx/read_marker_array",
data: '{}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
if (test !== null && test !== '') {
if (JSON.stringify(test) !== JSON.stringify(data)) {
alert('UPDATED!!!!!!')
test = data;
}
}
else {
//alert('LOADED FIRST TIME!!!')
test = data;
}
marker.setMap(null);
for (i = 0; i < data.d.length; i++) {
var position = new google.maps.LatLng(data.d[i].o_lat, data.d[i].o_lng);
bounds.extend(position);
marker = new google.maps.Marker({
position: position,
map: map,
title: data.d[i].transNo
});
var infowindow = new google.maps.InfoWindow();
google.maps.event.addListener(marker, 'click', (function (marker, i) {
return function () {
infowindow.setContent(data.d[i].content);
infowindow.open(map, marker);
}
})(marker, i));
}
},
error: function () {
alert('Connection error111, please retry');
}
}); //end of ajax
}, 3000)
遍历并删除标记,然后再使用新数据构建标记,例如。
marker.setMap(null);
//Loop through all the markers and remove
for (var i = 0; i < map.markers.length; i++) {
map.markers[i].setMap(null);
}
for (i = 0; i < data.d.length; i++) {
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.