2016-04-18 43 views
0

非常奇怪的问题。我有一个列表上的项目。他们切换点击展开和折叠。展开后,显示在其下的项目也会显示为我在页面上的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次点击,但我之后调整缩放的方式也有问题。

所以我错过了一个微妙的,我认为可能有更好的方法来处理这个,我不知道。谢谢。

+0

也许如果只有一个标记,则不应该调用fitBounds。 – geocodezip

+0

这是一个想法。也许我应该拿一个剩下的标记的纬度,并使地图中心成为那个,然后让缩放13.让我看看别人怎么说。谢谢。 – user192632

+0

这是一个好主意,它似乎工作正常。如果您可以在此添加答案,并将其纳入您的建议中,我可以将其标记出来。 map.panTo(标记[0] .getPosition());而不是map.fitBounds – user192632

回答

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