经过一定量的切换点击后,地图标记会消失

时间:2016-04-18 17:49:08

标签: javascript jquery google-maps google-maps-api-3

非常奇怪的问题。我有清单上的物品。他们切换点击以展开和折叠。展开后,其下显示的项目也会在我在网页上的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。

1 个答案:

答案 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);
    }
  }
}