我正在尝试在更改Google地图中的缩放级别时更改标记。 加载页面时,将在Google地图上创建6个标记(用于区域)并推入阵列,如果用户放大,则会删除6个标记并替换为其他标记(对于城市)标记的数量会有所不同,它没有修复。当用户缩小时,删除新标记并再次创建旧的6个标记。 所有这一切对我有用,除非用户缩小时只删除6个标记(对于城市)。 以下是我的代码示例:`
var markers=[];
addRegionsMarkers();
google.maps.event.addListener(map, 'zoom_changed', function () {
if (map.getZoom() == 11)
{
for (var i = 0; i < 6; i++)
{
markers[i].setVisible(false);
}
markers=[];
for (var i = 0; i < cityListMap.length; i++) {
(function ()
{
var k = i;
var marker = new MarkerWithLabel({
position: new google.maps.LatLng(cityListMap[i].latitude, cityListMap[i].longitude),
map: map,
labelContent: cityListMap[i].average.toFixed(1) + suffix,
labelAnchor: new google.maps.Point(20, 20),
labelClass: "labels",// the CSS class for the label
});
marker.setIcon('.');
marker.setTitle(cityListMap[i].city);
markers.push(marker);
}())
}
}
else
{
if (map.getZoom() == 8) {
for (var j = 0; j < cityListMap.length ; j++)
{
markers[j].setVisible(false);
// alert(markers[j].getTitle() + " id " + j);
}
markers =[];
addRegionsMarkers();
}
}
});
function addRegionsMarkers()
{
for (var i = 0; i < 6; i++) {
(function () {
var k = i;
var marker = new MarkerWithLabel({
position: locationsLatlng[i],
map: map,
labelContent: averagesArray[i] + suffix,
labelAnchor: new google.maps.Point(20, 20),
labelClass: "labels",// the CSS class for the label
});
marker.setIcon('.');
marker.setTitle(region[i]);
markers.push(marker);
}())
}
}`
我尝试了setVisible()和setMap(null)我有相同的结果只删除了6个标记,我检查了for循环是否通过在其中添加警报而正常工作。我尝试了所有我能想到的东西,直到我不知道,希望有人能向我解释为什么会发生这种情况。
答案 0 :(得分:-1)
我解决了:D ....
我在if语句中添加了一个条件:
if (map.getZoom() == 11 && markers.length==6)
{
.......
}
.....
if (map.getZoom() == 8 && markers.length==cityListMap.length) {....}
现在它很棒