【问题标题】:Does Google Maps provide the ability to draw multiple polygons on a map?Google 地图是否提供在地图上绘制多个多边形的功能?
【发布时间】:2012-04-26 11:29:49
【问题描述】:

使用 Google Maps JavaScript v3 API,是否可以在同一张地图上绘制多个单独的多边形?并包含一个在绘制每个形状后出现的消息框,并带有警告:'单击休息以绘制另一个'?

【问题讨论】:

    标签: javascript google-maps draw polygon


    【解决方案1】:

    是的,您可以在地图上绘制多个多边形;查看Drawing Library。如果您想在完成一个形状后显示一条消息,您需要针对 DrawingManager 定义一个侦听器函数,以侦听几个可能的完成事件通知之一:

    google.maps.event.addListener(drawingMgr, 'overlaycomplete', function( event ){
        var shape = event.overlay;
        var path = shape.getPath();    //returns an MVCArray of LatLng instances
        for ( var i = 0; i < path.length; i++ ) {
            var lat = path.getAt(i).lat(); //Corrected as per MVCArray
            var lng = path.getAt(i).lng(); //Corrected as per MVCArray
            //do something with the data...
        }
        //put your message display code here
    });
    

    在函数回调中,您可以访问刚刚完成的形状。所以在上面的代码中,event.overlay 将为您提供对形状的直接引用。如果我们假设形状是Polygon,那么您将能够直接访问形状的成员,如上所示。完整的Polygon 成员集记录在here

    【讨论】:

    • 谢谢你:) 这对我有帮助。如何获取与您提到的事件侦听器中创建的形状相关的数据..谢谢
    • 我已经更新了上面回调函数中的代码,向您展示了如何获取对已创建形状的引用,然后开始提取其相关数据。以及Polygon 的文档链接,以便您更深入地了解。
    • 谢谢,但返回异常,我更改了 FOR 循环内的两行,并使用“path.getAt(i)”而不是 path[i] 并且有效...谢谢你寻求帮助
    • 不错。我忘记了 MVCArray 的事情——现在你在帮助我。很高兴为您提供帮助 -
    【解决方案2】:

    我把整个代码都为我工作了:

    enter code here
    google.maps.event.addListener(drawingMgr, 'overlaycomplete', function( event ){
    var shape = event.overlay;
    var path = shape.getPath();    //returns an Array of LatLng
    for ( var i = 0; i < path.length; i++ ) {
        var lat = path.getAt(i).lat();
        var lng = path.getAt(i).lng();
        //do something with the data...
    }
    //put your message display code here
    

    });

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-10
      • 1970-01-01
      • 2020-04-13
      • 2012-04-18
      相关资源
      最近更新 更多