谷歌地图:如何查找地图内是否有任何标记

时间:2009-05-29 07:08:53

标签: google-maps

我将我的谷歌地图显示分成了几个部分,现在我想找出任何标记放在一个/任何颗粒细胞内。

任何帮助?

进一步解释:

我有

的地图范围
map.getBounds();

方法然后再将其划分为多个子边界。

我也把标记作为

map.addOverlay(markerObject);

现在,我想查找单元格(我通过边界划分地图得到的单元格)是否包含任何标记。

我将整个地图边界划分为多个子边界

3 个答案:

答案 0 :(得分:0)

因此请将所有标记保留在数组中。每个标记都有一个名为get_position()的方法。在完成将地图划分为小子边界的划分后,您只需迭代子边界并检查其中的标记。
PS。另请查看it,在某些情况下可能会有用。


假设您在子绑定单元格上:

var sub_bounds = new Array();
// here you've pushed into an array the sub bounds
for ( var i = 0; i<sub_bounds.length; ++i)
{
    for ( var j = 0; j < markers.length; ++j)
    {
       var lat = markers[j].get_position( ).lat;
       var lng = markers[j].get_position( ).lng;
       if ( sub_bounds[i].sw.lat<lat && lat<sub_bounds[i].ne.lat &&
            sub_bounds[i].sw.lng<lng && lng<sub_bounds[i].ne.lng)
       // marker within cell, do whatever you need to do
    }
}

答案 1 :(得分:0)

以上解决方案重复迭代:

首先 - 你的sub_bounds有多大?每个说10个纬度和经度度。

第二 - 标记的位置是(floor(marker.lat / 10),floor(marker.lng / 10))

第三 - 将每个标记添加到地图中并放入该子域的存储桶中。

所以(40,-78)将位于桶(4,7)即桶[“4~7”]

  

更正:将位于存储桶(4,-7)中,即存储桶[“4~-7”]

将包含40到50 lat和-70和-80 lng之间的所有标记。

您可以使用GLatLngBounds作为在每个存储桶中保存所有这些标记的对象,这将为您提供一组很好的方法,例如根据当前标记计算存储桶的中心。

答案 2 :(得分:0)

这里可能是最好的解决方案:如何找出一个点是否在多边形内:

How to detect that a point is inside a Polygon using Google Maps?