我根据 Google Maps API 教程创建了此函数。
- 删除标记部分不起作用。
- 信息窗口仅在一个标记上打开,即使我单击 不同的。
"gpsarray" contains arrays with location information separated by commas.
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);
});
}
最佳答案
要从 map 上删除标记,请将其 map 属性设置为 null
(而不是 map
)。
这个:
markers[i].setMap(map);
应该是:
markers[i].setMap(null);
您关于 infoWindows 的问题与 Google Maps JS API v3 - Simple Multiple Marker Example 重复。 (当前循环完成时,代码中只有一个标记变量,您可以使用函数闭包将点击监听器与 map 上创建的每个单独标记关联起来)。
关于javascript - 谷歌地图功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38108729/