zjm*_*126 18 javascript google-maps clear google-maps-api-3 google-maps-markers
我想在Google地图上清除标记.
marker.setVisible(false)和之间有什么区别marker.setMap(null)?
但我不知道,哪个是对的?
Dan*_*llo 24
这两种方法之间的差异似乎没有明确记录.但请注意以下事项:
使用时setMap(null),您的标记将失去对该标记的引用Map.如果不保留Map对象的引用,则无法重新显示标记.
此外,该setMap()方法不会触发visible_changed事件,而方法会触发事件setVisible()(如果实际上切换了可见性).
例:
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: new google.maps.LatLng(-25.363, 131.044),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var marker = new google.maps.Marker({
position: new google.maps.LatLng(-25.363, 131.044),
map: map
});
google.maps.event.addListener(marker, 'visible_changed', function() {
console.log('visible_changed triggered');
});
marker.setVisible(false); // visible_changed triggered
marker.setVisible(true); // visible_changed triggered
marker.setMap(null); // visible_changed not triggered
marker.setMap(map); // visible_changed not triggered
Run Code Online (Sandbox Code Playgroud)
我想我们应该setVisible(false)在我们打算在地图上再次重新显示标记时使用该方法,以及setMap(null)我们何时不再显示它.
Phi*_*lau 12
另一个关键区别是setMap(NULL)释放与标记关联的资源,而setVisible(false)只是使标记不可见,但仍然分配与标记关联的资源.
如果您正在处理100或1000个标记,这可能会成为重要的性能和内存问题.
| 归档时间: |
|
| 查看次数: |
27312 次 |
| 最近记录: |