简介
我想找到位于通过在地图上拖动鼠标而创建的矩形区域内的所有标记。这个功能是否受到任何jQuery插件或其他东西的支持?如果没有,我想在我的项目中实现这一点。我认为这很酷。
详情
我正在使用Google Maps v2,因为我想在我的项目中支持IE 6。
我是地图中的初学者,并浏览了Developer's guide section以及一些基本演示和其他SO问题。
到目前为止,这是我的想法 -
用户点击地图控件部分的“选择区域”按钮。这会调用disableDragging(),用户可以进行选择。 (可能http://code.google.com/apis/maps/documentation/javascript/v2/controls.html#Custom_Controls会对如何做到这一点有所了解)
然后用户进行区域选择。记录选择开始和选择结束点,并假设它们是矩形的两个相对角,找到其中的标记。但是,到目前为止,我没有看到任何工作代码来获取点击点的坐标。我想最好用纬度/经度作为坐标而不是实际的x-y坐标。这个问题Google Maps API using jQuery Plugin: How to get a marker's latitude and longitude on click?讨论了点击标记时获取标记的纬度/经度,但我还没有成功尝试过。
摘要
以下是我的问题 -
如何在地图上显示矩形选区? (通常呈浅灰色,外观透明)
如何获取点击点的纬度/经度(纬度/经度),然后对其进行扩展以获得选择起点和终点。
我对jQuery很有经验,如果有一些很好的jQuery插件解决方案,请告诉我。我看到了10 jQuery Plugins for Easier Google Map Installation的这个列表,但不确定这些是否有助于我满足我的要求。
当我有标记列表时,我想在单独的显示部分中填充一些相关信息,这样每次用户选择一些标记时,相应的信息都会显示在显示部分中。那部分应该更容易。
由于
答案 0 :(得分:4)
您可以查看KeyDragZoom下的Google Maps API Demo Gallery示例,以获得矩形选择功能。您可以找到文档here。
对于第二个问题,您可以使用GLatLngBounds
类及其containsLatLng(latlng:GLatLng)
函数。通过将GLatLngBounds
对象设置为矩形的边界,您可以使用containsLatLng
函数测试您的标记。
如果您决定使用KeyDragZoom,则向dragend
添加getDragZoomObject
侦听器将为您提供一个GLatLngBounds
对象,您可以使用该对象使用containsLatLng函数来测试您的标记。< / p>
map.enableKeyDragZoom();
var dz = map.getDragZoomObject();
GEvent.addListener(dz, 'dragend', function (bnds) {
// test your markers against bnds here
});