我想以编程方式更改地图的缩放级别和位置。具体来说,从显示美国的毗连(48个州)开始,我想放大到特定的州。我使用goMap插件(http://www.pittss.lv/jquery/gomap/)。我知道,这可以通过“重置”来实现--删除现有的地图设置参数,如缩放、位置和映射类型,并以新值启动“新”。
但是,如果我已经有了整个美国的标记,而新的缩放级别只显示密苏里州,是否有办法限制在此“重置”过程中必须重新绘制的标记,以忽略那些在当前投影(密苏里州)地图上不可见的标记?
为什么要花时间画出所有的标记,而其中只有一小部分会被看到?
我可以编写几个方法,例如ShowAllMarkers()、ShowMissouriMarkers()、ShowCaliforniaMarkers()等等,但我希望有一种方法只在可见的表面上绘制。
这是可能的还是白日梦?
gomap googlemaps jquery
发布于 2013-11-15 09:19:33
您要寻找的功能将在Google v3 (这是goMaps使用的底层API )中实现,方法是获取可见的边界,并且只显示它“包含”的标记。
Go map允许您访问本机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);
}
}
});
https://stackoverflow.com/questions/20006486
复制