我将我的谷歌地图显示分成了几个部分,现在我想找出任何标记放在一个/任何颗粒细胞内。
任何帮助?
进一步解释:
我有
的地图范围map.getBounds();
方法然后再将其划分为多个子边界。
我也把标记作为
map.addOverlay(markerObject);
现在,我想查找单元格(我通过边界划分地图得到的单元格)是否包含任何标记。
我将整个地图边界划分为多个子边界
答案 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?