【问题标题】:How to draw multiple polylines by clicking?如何通过点击绘制多条折线?
【发布时间】:2012-05-01 06:15:13
【问题描述】:

我一直在寻找解决方案,但都是如何从 json 文件等中绘制折线。主要问题是每次单击“新建折线”按钮时如何获得创建新折线并将旧折线存储在数组中的功能?二、点击“新建折线”按钮后如何在地图上留下折线并绘制新的,只有点击右键才能清理和恢复?可能更好的方法是将折线存储在类之外,或者为此创建一个新的单独类?您可能需要以不同的方式处理这个问题吗?

糟糕的演示,但强调我希望的意思:jsfiddle

数组已移至全局范围,但无法在最后一条折线上设置地图只能通过 clearOverlays 函数工作。现在,其他按钮出现了并发症。我创建了额外的全局对象 newPoly 但不知道好主意是否可以更好地从 myPolyline 获取对象?在其他方面,无法在存储在数组折线中的地图上设置恢复情况。

【问题讨论】:

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


    【解决方案1】:

    要保存您制作的多段线,请创建另一个全局变量来存储多段线并将它们推入,同时在数组中的最后一条多段线上设置映射(null)。您不能将创建的多段线存储在同一个对象中,因为您每次都在创建一个新的。 所以动起来:

    this.polyLines = [];
    

    离开类,进入全局范围,或进入另一个类,将标记数组留在其中很好,因为这是该折线实例的本地。

    这也应该有帮助 - https://developers.google.com/maps/documentation/javascript/overlays#OverlaysOverview

    【讨论】:

    • 非常有帮助,但我想要更多专家的提示。虽然这是个老问题,但我还没有关闭它。
    • 我将发布一个新的 jsfiddle 示例,让问题保持开放-
    • 好吧,我还在努力学习,已经取得了一些进展。
    • 您的最新版本的 jsfiddle 似乎可以工作,现在使用 getPath.clear(),您还想完成什么
    • 如果 new 不工作 set map null: lastPoly.polyMarkers[i].setMap(null);我会把它移到干净的盒子里,画新的时候我会在地图上留下线条。下一个问题与第一个在还原情况下相同的类型不起作用: polyLines[i].setMap(map);最后,我已经将 newPoly 对象拉出到 global 我不知道这是否是好的做法。也许我应该在创建新对象之前删除最后一个对象?
    猜你喜欢
    • 2019-10-27
    • 2018-03-08
    • 2018-10-01
    • 2017-10-05
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多