【问题标题】:How to get lat long on draggable polygons? [duplicate]如何在可拖动的多边形上获得 lat long? [复制]
【发布时间】:2018-12-05 09:00:18
【问题描述】:

我想在拖动或编辑多边形时获取纬度和经度。我如何将事件侦听器应用于此多边形,以便每当我编辑或拖动多边形时,它应该在我在多边形上编辑的每个点的控制台上显示纬度。

function initialize() {
    var map = new google.maps.Map(document.getElementById("map"), {
        zoom: 15,
        center: {lat: 51.476706, lng: 0},
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    // create an array of coordinates for a pentagonal polygon
    var arrCoords = [
        new google.maps.LatLng(51.474821, -0.001935),
        new google.maps.LatLng(51.474647, 0.003966),
        new google.maps.LatLng(51.477708, 0.004073),
        new google.maps.LatLng(51.479753, 0.000468),
        new google.maps.LatLng(51.477654, -0.002192)
    ];

    var polygon = new google.maps.Polygon({
        editable: true,
        paths: arrCoords,
        strokeColor: "#FF0000",
        strokeOpacity: 0.8,
        strokeWeight: 2,
        fillColor: "#FF0000",
        fillOpacity: 0.35,
        map: map
    });
}

google.maps.event.addDomListener(window, 'load', initialize);

【问题讨论】:

    标签: javascript jquery google-maps


    【解决方案1】:

    首先在多边形中用draggable: true制作geodesic: true

    在多边形或折线上启用拖动时,您还应该 考虑使多边形或折线测地线,通过设置其 geodesic 属性到true

    参考:https://developers.google.com/maps/documentation/javascript/shapes

    insert_at & set_at 将在 polyline 得到 edited 时被调用。

    var polygon = new google.maps.Polygon({
        editable: true,
        paths: arrCoords,
        strokeColor: "#FF0000",
        strokeOpacity: 0.8,
        strokeWeight: 2,
        fillColor: "#FF0000",
        fillOpacity: 0.35,
        map: map,
        draggable: true,
        geodesic: true        
    });
    
    google.maps.event.addListener(polygon, 'dragend', function(evt){        
        console.log(evt.latLng.lat() ,'--',  evt.latLng.lng() );
    });
    
    google.maps.event.addListener(polygon.getPath(), 'insert_at', function(index, obj) {
         console.log('Vertex removed from inner path.');
         console.log(obj.lat() ,'--',  obj.lng() );
    });
    
    google.maps.event.addListener(polygon.getPath(), 'set_at', function(index, obj) {
         console.log('Vertex moved on outer path.');
         console.log(obj.lat() ,'--',  obj.lng() );
    });
    

    【讨论】:

    • 它只在拖动而不是在编辑.. 它只显示 2 点 latlong 我有多个点。
    • @izza 添加了编辑多边形时的功能。请检查
    • 它的工作,但我怎样才能得到像东西南北的位置?
    • 1) OP 没有要求可拖动的多边形 2) geodesic 与编辑多边形有什么关系?它有什么作用? 3) 编辑标记时使用下面的代码你在说什么标记?
    • @MrUpsidown 谢谢,在回答之前还没有检查社区是否有重复:)
    猜你喜欢
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多