Как получить широту на перетаскиваемых полигонах?

Я хочу получать широту и долготу при перетаскивании или редактировании многоугольника. Как я могу применить прослушиватели событий к этому многоугольнику, чтобы всякий раз, когда я редактирую или перетаскиваю многоугольник, он должен отображать lat long на консоли каждой точки, которую я редактирую на многоугольнике.

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);

Как получить широту на перетаскиваемых полигонах?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
598
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

сначала сделайте geodesic: true с draggable: true в многоугольник

When enabling dragging on a polygon or polyline, you should also consider making the polygon or polyline geodesic, by setting its geodesic property to 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.info(evt.latLng.lat() ,'--',  evt.latLng.lng() );
});

google.maps.event.addListener(polygon.getPath(), 'insert_at', function(index, obj) {
     console.info('Vertex removed from inner path.');
     console.info(obj.lat() ,'--',  obj.lng() );
});

google.maps.event.addListener(polygon.getPath(), 'set_at', function(index, obj) {
     console.info('Vertex moved on outer path.');
     console.info(obj.lat() ,'--',  obj.lng() );
});

Это только при перетаскивании, а не при редактировании .. и он показывает только 2 точки в длину, у меня несколько точек.

user10748394 05.12.2018 10:18

@izza добавила функцию при редактировании многоугольника. проверьте пожалуйста

Shiv Kumar Baghel 05.12.2018 10:34

это работает, но как я могу получить такие позиции, как северо-восток, запад, юг?

user10748394 05.12.2018 11:04

1) OP не запрашивал перетаскиваемый многоугольник 2) Какое отношение имеет geodesic к редактированию многоугольника? Что оно делает? 3) используйте код ниже, когда маркер редактируется о каком маркере ты говоришь?

MrUpsidown 05.12.2018 11:19

1) попросил перетащить / отредактировать плойгон. 2) добавлена ​​ссылка на geodesic. если не активирован, то полилинии нельзя будет перетаскивать. 3) говорить о функции, которая будет вызываться при перетаскивании полилиний. Спасибо, @MrUpsidown отредактировал мой ответ.

Shiv Kumar Baghel 05.12.2018 11:29

1) Верно. Я пропустил это. 2) Нет. geodesic не имеет ничего общего с возможностью перетаскивать полилинии или вершины многоугольника. geodesic: Когда истинно, края многоугольника интерпретируются как геодезические и будут следовать кривизне Земли. Если установлено значение false, края многоугольника отображаются в виде прямых линий в пространстве экрана. Обратите внимание, что форма геодезического многоугольника может измениться при перетаскивании, поскольку размеры сохраняются относительно поверхности земли. По умолчанию - false.

MrUpsidown 05.12.2018 11:50

Как правило: пожалуйста, избегайте ответов на вопросы, на которые уже были даны многократные ответы (дубликаты), как в данном случае.

MrUpsidown 05.12.2018 11:53

@MrUpsidown спасибо, прежде чем ответить, не проверяйте сообщество на двуличность :)

Shiv Kumar Baghel 05.12.2018 14:22

Другие вопросы по теме