В вашем коде есть опечатка.Вы используете исходные данные для расширения границ, исходные данные не изменятся, вам нужно расширить границы новыми значениями пути многоугольника:
google.maps.event.addListener(editzones, 'dragend', function(){
var polypath = editzones.getPath();
coordinates = [];
var bounds = new google.maps.LatLngBounds();
for (var i = 0 ; i < polypath.length ; i++) {
bounds.extend(zonedata[i]); // <======= typo, this is the original array, it won't change.
coordinates.push({
lat: polypath.getAt(i).lat(),
lng: polypath.getAt(i).lng()
});
}
var lat = bounds.getCenter().lat().toString();
var lng = bounds.getCenter().lng().toString();
var center = new google.maps.LatLng(lat, lng);
stringlocation = JSON.stringify(coordinates);
stringcenter = JSON.stringify(center);
console.log(stringcenter + stringlocation);
});
должно быть:
google.maps.event.addListener(editzones, 'dragend', function(){
var polypath = editzones.getPath();
coordinates = [];
var bounds = new google.maps.LatLngBounds();
for (var i = 0 ; i < polypath.length ; i++) {
bounds.extend(polypath.getAt(i)); // <==== updated path of polygon
coordinates.push({
lat: polypath.getAt(i).lat(),
lng: polypath.getAt(i).lng()
});
}
var lat = bounds.getCenter().lat().toString();
var lng = bounds.getCenter().lng().toString();
var center = new google.maps.LatLng(lat, lng);
stringlocation = JSON.stringify(coordinates);
stringcenter = JSON.stringify(center);
console.log(stringcenter + stringlocation);
});
подтверждение концепции скрипта
фрагмент кода:
var geocoder;
var map;
var zonedata = [{
lat: 37.467776,
lng: -122.155194
},
{
lat: 37.448836,
lng: -122.173734
},
{
lat: 37.446928,
lng: -122.121549
}
]
function initialize() {
var center = new google.maps.LatLng(37.4419, -122.1419);
var zoom = 13;
var editmap = new google.maps.Map(document.getElementById("map"), {
center: center,
zoom: zoom
});
google.maps.event.addListener(editmap, 'click', function(e) {
console.log(e.latLng.toUrlValue(6));
});
var editzones = new google.maps.Polygon({
paths: zonedata,
fillColor: '#FF0000',
fillOpacity: 0.35,
strokeWeight: 0,
draggable: true,
editable: true
});
editzones.setMap(editmap);
var drawingManager = new google.maps.drawing.DrawingManager();
drawingManager.setMap(editmap);
google.maps.event.addListener(editzones, 'dragend', function() {
var polypath = editzones.getPath();
coordinates = [];
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < polypath.length; i++) {
bounds.extend(polypath.getAt(i));
coordinates.push({
lat: polypath.getAt(i).lat(),
lng: polypath.getAt(i).lng()
});
}
var center = bounds.getCenter();
stringlocation = JSON.stringify(coordinates);
stringcenter = JSON.stringify(center);
console.log(stringcenter + stringlocation);
});
}
google.maps.event.addDomListener(window, "load", initialize);
html,
body,
#map {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js?libraries=geometry,drawing"></script>
<div id="map"></div>