Я хочу получать широту и долготу при перетаскивании или редактировании многоугольника. Как я могу применить прослушиватели событий к этому многоугольнику, чтобы всякий раз, когда я редактирую или перетаскиваю многоугольник, он должен отображать 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);
сначала сделайте 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 totrue
Ссылка: 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() );
});
@izza добавила функцию при редактировании многоугольника. проверьте пожалуйста
это работает, но как я могу получить такие позиции, как северо-восток, запад, юг?
1) OP не запрашивал перетаскиваемый многоугольник 2) Какое отношение имеет geodesic
к редактированию многоугольника? Что оно делает? 3) используйте код ниже, когда маркер редактируется о каком маркере ты говоришь?
1) попросил перетащить / отредактировать плойгон. 2) добавлена ссылка на geodesic
. если не активирован, то полилинии нельзя будет перетаскивать. 3) говорить о функции, которая будет вызываться при перетаскивании полилиний. Спасибо, @MrUpsidown отредактировал мой ответ.
1) Верно. Я пропустил это. 2) Нет. geodesic
не имеет ничего общего с возможностью перетаскивать полилинии или вершины многоугольника. geodesic
: Когда истинно, края многоугольника интерпретируются как геодезические и будут следовать кривизне Земли. Если установлено значение false, края многоугольника отображаются в виде прямых линий в пространстве экрана. Обратите внимание, что форма геодезического многоугольника может измениться при перетаскивании, поскольку размеры сохраняются относительно поверхности земли. По умолчанию - false.
Как правило: пожалуйста, избегайте ответов на вопросы, на которые уже были даны многократные ответы (дубликаты), как в данном случае.
@MrUpsidown спасибо, прежде чем ответить, не проверяйте сообщество на двуличность :)
Это только при перетаскивании, а не при редактировании .. и он показывает только 2 точки в длину, у меня несколько точек.