5

简而言之
我想找到所有的标记,位于通过拖动鼠标在地图上创建的矩形区域内。此功能是否支持任何jQuery插件或其他功能?如果没有,我想在我的项目中实现这一点。我认为这将很酷。如何通过鼠标拖动选择区域内的标记?

详细信息
我使用的是Google Maps v2,因为我想在我的项目中支持IE 6。

我是地图的初学者,经历了Developer's guide section以及一些基本的演示和其他SO问题。

这里是我的想法至今 -

摘要
这里是我的问题再次 -

  • 如何显示在地图上一个矩形选择区域? (一般为灰白色,外观透明)

  • 如何获得点击点的lat/lang(纬度/经度),然后扩展它以获得选择开始点和结束点的纬度/经度。

我对jQuery很有经验,如果有一些很好的jQuery插件解决方案,请让我知道。我看到了这个10 jQuery Plugins for Easier Google Map Installation的列表,但不确定这些列表是否能帮助我满足我的要求。

当我有标记列表时,我想在单独的显示部分中填充一些相关信息,以便每次用户选择某些标记时,相应的信息都会显示在显示部分中。这部分应该更容易。

感谢

回答

4

您可以检查Google Maps API Demo GalleryKeyDragZoom例如实现矩形选择功能。你可以找到文档here

对于第二个问题,你可以使用GLatLngBounds类及其containsLatLng(latlng:GLatLng)功能。通过将您的GLatLngBounds对象设置为矩形的边界,您可以使用containsLatLng函数对它进行测试。

如果你决定使用KeyDragZoom,增加了dragend监听器getDragZoomObject会给你一个GLatLngBounds对象,您可以使用针对与containsLatLng功能测试你的标记。

map.enableKeyDragZoom(); 
var dz = map.getDragZoomObject(); 
GEvent.addListener(dz, 'dragend', function (bnds) { 
    // test your markers against bnds here 
}); 
+0

+1看起来像这正是我想要的...... – 2011-05-10 09:36:51

+0

是的,可以解决问题。对于上述dragend事件中的检查部分,此解决方案http://stackoverflow.com/questions/2949486/how-to-check-if-there-are-any-markers-within-a-google-maps-viewport/ 3298437#3298437可以跟着 – 2011-05-10 21:03:59