【问题标题】:How to hide marker when zoom out?缩小时如何隐藏标记?
【发布时间】:2016-03-27 07:38:33
【问题描述】:
我正在通过 JavaScript 开发 android 应用程序,我想知道当我使用 Google 地图缩小小于 15 时如何隐藏地图标记,这是我使用的代码:
function success1(position) {
var bangalore = { lat: 24.7511, lng: 46.6568 };
var gift = { lat: 24.7906, lng: 46.6312 };
var map = new google.maps.Map(document.getElementById('mapp'), {
zoom: 17,
streetViewControl: false,
panControl: false,
disableDoubleClickZoom: true,
TiltGestures: false,
AllGestures: false,
ZoomGestures: false,
ScrollGestures: false,
zoomControl: false,
scrollwheel: false,
center: bangalore
});
var image = 'http://iconbug.com/download/size/32/icon/7605/yellow-gift-box/';
zoom = map.getZoom();
var zoom = map.getZoom();
var beachMarker = new google.maps.Marker({
position: gift,
map: map,
icon: image,
});
}
【问题讨论】:
标签:
javascript
android
google-maps
【解决方案1】:
要从地图中删除/隐藏marker,请调用 setMap() 方法并将 null 作为参数传递。
marker.setMap(null);
.setMap(null) 函数将阻止标记显示在地图上。您也可以使用它来隐藏多边形和折线。
google.maps.event.addListener(map, 'zoom_changed', function() {
var zoom = map.getZoom();
if (zoom <= 15) {
marker.setMap(null);
} else {
marker.setMap(map);
}
});
请注意,上述方法不会删除标记。它简直
从地图中删除标记。相反,如果您希望删除
标记,您应该将其从地图中删除,然后设置标记
自己为空。
【解决方案2】:
这是java代码。希望您可以将其转换为 Javascript。
设置相机变化监听器。如果新的缩放级别小于之前的缩放级别,则表示发生了缩小,因此请隐藏标记。
mMap.setOnCameraChangeListener(new OnCameraChangeListener() {
private float currentZoom = mMap.zoom;
@Override
public void onCameraChange(CameraPosition newPosition) {
if (newPosition.zoom < currentZoom){
// remove a particular marker
yourMarker.remove();
// or remove all the markers
mMap.clear();
}
}
});
【解决方案3】:
在缩放级别上没有显示/隐藏标记的特定属性,您必须检查缩放级别
var image = 'http://iconbug.com/download/size/32/icon/7605/yellow-gift-box/';
if (zoomLevel>=15 ) {
var beachMarker = new google.maps.Marker({
position: gift,
map: map,
icon: image,
});
}
隐藏
if (zoomLevel<15 ) {
beachMarker.setMap(null);
}