我想以编程方式更改地图的缩放级别和位置。具体来说,从美国开始显示连续(48个州),我想放大特定的状态。我使用goMap插件(http://www.pittss.lv/jquery/gomap/)。我知道这可以通过“重置”来实现 - 删除现有的地图设置参数,例如缩放,位置和地图类型,并使用新值启动“新鲜”。
但是,如果我已经拥有整个美国的标记,并且新的缩放级别仅显示密苏里州,那么我是否可以限制在此“重置”过程中必须重绘的标记忽略那些在当前投影中不可见的地图(密苏里州)?
IOW,为什么要花时间绘制所有标记,只会看到一小部分标记?
我可以写几个方法,比如ShowAllMarkers(),ShowMissouriMarkers(),ShowCaliforniaMarkers()等,但我希望有一种方法可以简单地只在可见表面上绘制。
这可能,还是梦想?
gomap googlemaps jquery
答案 0 :(得分:1)
您正在寻找的功能将通过获取可见边界并仅显示由其“包含”的标记,在Google Maps Javascript API v3(goMaps使用的底层API)中实现。
Go map可让您访问本机地图对象:
$.goMap.map
和标记:
$.goMap.markers
所以这应该有效:
google.maps.event.addListener($.goMap.map, 'bounds_changed', function() {
var map = $.goMap.map;
var bounds = map.getBounds();
var markers = $.goMap.markers;
for (var i=0; i < markers.length; i++) {
if (bounds.contains(markers[i].getPosition()) {
// show the marker
markers[i].setMap(map);
} else {
// hide the marker
markers[i].setMap(null);
}
}
});