有没有办法将地图标记限制在谷歌地图上当前显示的区域(使用goMap插件)?

时间:2013-11-15 16:58:41

标签: jquery google-maps google-maps-markers

我想以编程方式更改地图的缩放级别和位置。具体来说,从美国开始显示连续(48个州),我想放大特定的状态。我使用goMap插件(http://www.pittss.lv/jquery/gomap/)。我知道这可以通过“重置”来实现 - 删除现有的地图设置参数,例如缩放,位置和地图类型,并使用新值启动“新鲜”。

但是,如果我已经拥有整个美国的标记,并且新的缩放级别仅显示密苏里州,那么我是否可以限制在此“重置”过程中必须重绘的标记忽略那些在当前投影中不可见的地图(密苏里州)?

IOW,为什么要花时间绘制所有标记,只会看到一小部分标记?

我可以写几个方法,比如ShowAllMarkers(),ShowMissouriMarkers(),ShowCaliforniaMarkers()等,但我希望有一种方法可以简单地只在可见表面上绘制。

这可能,还是梦想?

gomap googlemaps jquery

1 个答案:

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