San*_*ath 5 google-maps selection google-maps-markers google-maps-api-2
简而言之,
我想找到位于通过在地图上拖动鼠标而创建的矩形区域内的所有标记.这个功能是否受到任何jQuery插件或其他东西的支持?如果没有,我想在我的项目中实现这一点.我觉得这很酷.
详细信息
我正在使用Google Maps v2,因为我想在我的项目中支持IE 6.
我是地图的初学者,并通过开发人员指南部分和一些基本演示和其他SO问题.
到目前为止,这是我的想法 -
用户单击地图控件部分中的"选择区域"按钮.这会调用disableDragging(),用户可以进行选择.(可能是http://code.google.com/apis/maps/documentation/javascript/v2/controls.html#Custom_Controls给出了一些如何做到这一点的想法)
然后用户进行区域选择.记录选择开始和选择结束点,并假设它们是矩形的两个相对角,找到其中的标记.但是,到目前为止,我没有看到任何工作代码来获取点击点的坐标.我想最好用纬度/经度作为坐标而不是实际的xy坐标.这个问题Google Maps API使用jQuery插件:如何在点击时获取标记的经度和纬度?讨论在点击标记时获取标记的纬度/经度,但我还没有成功尝试过.
总结
以下是我的问题 -
如何在地图上显示矩形选区?(通常略带灰色且外观透明)
如何获得点击点的纬度/经度(纬度/经度),然后将其扩展以获得选择的起点和终点.
我对jQuery很有经验,如果有一些很好的jQuery插件解决方案,请告诉我.我看到了10个jQuery插件列表,用于更轻松的谷歌地图安装,但不确定是否有任何一个可以帮助我满足我的要求.
当我有标记列表时,我想在单独的显示部分中填充一些相关信息,这样每次用户选择一些标记时,相应的信息都会显示在显示部分中.那部分应该更容易.
谢谢
小智 4
您可以查看Google Maps API Demo Gallery下的KeyDragZoom 示例来实现矩形选择功能。您可以在此处找到文档。
对于第二个问题,您可以使用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
});
Run Code Online (Sandbox Code Playgroud)