Google地图检查标记是否与多个多边形共享

时间:2016-06-01 07:51:38

标签: javascript google-maps google-maps-api-3

我有一个谷歌地图有一些标记。我有坐标或每个标记,我有一个绘图工具,允许我绘制多边形。

我正在尝试检测绘制多边形内的标记是否与一个或多个其他多边形共享,所以这是我的逻辑和代码:

逻辑:当我绘制一个多边形时,我将它放在一个名为“多边形”的数组中,然后我从该数组中删除最后绘制的多边形,然后我提取其中每个标记的位置,然后为每个标记提取我检查它是否是是否在其他多边形内部。

这是我的代码:

我遇到的问题是,即使没有与2个或多个多边形共享标记,变量shared_markers也总是返回true。有什么帮助吗? 感谢

1 个答案:

答案 0 :(得分:1)

导致问题的代码行是您获取除最后一个以外的所有多边形的位置:

function checkIfSharedMarkers(polygons, gmarkers){
    ...
    var all_drawn_polygons_except_last_one = polygons.splice(-1,1);
    ...
}

Array splice()方法修改原始数组。我比较了调用该行之前和之后的数组长度,它是相同的 - 因此all_drawn_polygons_except_last_one仍然包含最后绘制的多边形。我用以下内容替换了该行:

var all_drawn_polygons_except_last_one = polygons.slice(0, polygons.length-1)

使用Array slice()而不是splice()(这可以确保保留原始的polygons数组)。这会在新数组中返回所选元素,因此all_drawn_polygons_except_last_one现在删除了最后一个元素。

请参阅this Plunkr了解演示。