我将此功能基于Google Maps API教程。
" gpsarray"包含由逗号分隔的位置信息的数组。
var map;
var markers = [];
function markersAdd(gpsarray){
// Remove all Google Maps Markers
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(map);
}
markers = [];
// Loop the array and add the corresponding markers
for (var i = 0; i < gpsarray.length; i++) {
gps = gpsarray[i].split(",");
latitude = parseFloat(gps[4]);
longitude = parseFloat(gps[3]);
var marker = new google.maps.Marker({
position: {lat: latitude, lng: longitude},
map: map,
title: gps[0]
});
markers.push(marker);
// Add a new infowindow
var infowindow = new google.maps.InfoWindow({
content: "Datetime: " + gps[1]
});
marker.addListener('click', function() {
infowindow.open(map, marker);
});
}
答案 0 :(得分:1)
要从地图中删除标记,请将其地图属性设置为null
(不是map
)。
此:
markers[i].setMap(map);
应该是:
markers[i].setMap(null);
关于infoWindows的问题是Google Maps JS API v3 - Simple Multiple Marker Example的重复(当你的循环完成时,你的代码中只有一个标记变量,你可以使用函数闭包将点击监听器与地图上创建的每个单独的标记相关联)。