非常奇怪的问题。我有清单上的物品。他们切换点击以展开和折叠。展开后,其下显示的项目也会在我在网页上的Google地图上显示为标记。在我的测试中,我在列表中有一个项目。当我点击时,它下面的相关项目会显示,它们的标记会显示在地图上,或者根据切换状态隐藏。
始终如一地,在该项目显示和隐藏地图上的内容后,只需点击11次,其中一个应该显示的标记不再显示。我不知道为什么每次只有11次点击。更奇怪的是,如果我在地图上拖动或缩放,则会立即显示丢失的标记。由于这个线索,我知道问题在哪里,我现在禁用它,问题就消失了。这是相关的代码
function setNewMarkers() {
//clearOldMarkers();
bounds = new google.maps.LatLngBounds();
for (i = 0; i < markers.length; i++) {
markers[i].setMap(map);
bounds.extend(markers[i].getPosition());
}
map.fitBounds(bounds);
/*if (dragged == false && dblclick == false) {
map.fitBounds(bounds);
if (markers.length == 1) {
map.setZoom(13);
}
}*/
}
注意底部注释掉的部分。那就是问题,在评论之后就消失了。如果只有一个标记(家庭基准标记)并且所有列表项都已折叠,我试图阻止地图放大太远。 所以我必须调用fitBounds,但是如果只有一个标记,我之后调整缩放的方式有问题,即使它只需10次点击。
所以我错过了一个微妙的东西,我认为可能有更好的方法来解决这个问题,我不知道。 THX。
答案 0 :(得分:1)
当您有一个标记时,您正在调用fitBounds两次。相反,你知道中心是什么(一个现有的标记)和你想要的缩放,只需使用它们。
function setNewMarkers() {
bounds = new google.maps.LatLngBounds();
for (i = 0; i < markers.length; i++) {
markers[i].setMap(map);
bounds.extend(markers[i].getPosition());
}
map.fitBounds(bounds);
if (dragged == false && dblclick == false) {
if (markers.length == 1) {
map.panTo(markers[0].getPosition());
map.setZoom(13);
}
}
}