【问题标题】:Google Map API : Marker within marked polygonGoogle Map API:标记多边形内的标记
【发布时间】:2015-11-16 17:51:27
【问题描述】:

我在地图上绘制了近 4 到 5 千个标记。我希望用户允许在地图上绘制多边形,然后删除阴影多边形内的那些标记。谁能指导我如何找到多边形阴影区域内的标记?

【问题讨论】:

    标签: google-maps-api-3 polygon marker


    【解决方案1】:

    首先您需要使用geometry library。将 libraries=geometry 附加到您用于加载 Maps API 的 URL 的查询字符串中:

    <script src="https://maps.googleapis.com/maps/api/js?libraries=geometry"></script>
    

    然后您可以使用containsLocation 函数来检查每个标记是否在多边形内。

    for (var i = 0; i < markers.length; i++) {
        if (google.maps.geometry.poly.containsLocation(markers[i].getPosition(), yourPolygon)) {
            markers[i].setMap(null);
        }
    }
    

    我假设您在一个名为 markers 的数组中拥有这 5k 个标记。通过“删除这些标记”,您只是意味着将它们从视图中删除。此时您可能还想触发一个 ajax 请求,和/或从该标记数组中删除它们。

    【讨论】:

    • 感谢您的及时回复。实际上,我想捕获用户剩余的标记,即删除给定用户的标记,以便下次加载地图时,他将无法看到较早删除的标记。
    • 您的用户是否已登录,因此您要根据他们的个人资料将这些标记存储在服务器端?或者使用 cookie 或 Window.localStorage 之类的客户端存储?
    • 我想将它们存储在@server 端。而且我必须允许用户一个一个地绘制多个多边形并删除多边形阴影区域中的标记。您是否建议不要在客户端删除它们,而是将绘制的多边形坐标发送到服务器并将它们标记为该用户已删除并重新发送剩余的标记。它不会消耗太多的客户端-服务器流量吗?
    • 不,我会说全部在客户端删除标记,并发送 ajax 请求以指示您要为该用户删除哪些标记。在每个标记的循环中,或者让用户单击一个按钮以在一个请求中将它们全部发送
    猜你喜欢
    • 1970-01-01
    • 2015-11-23
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多