Приветствуют уважаемых разработчиков.
Есть вопрос по Google Maps Api v3.
Вот тут
https://jsfiddle.net/5dwqysa9/
есть возможность нарисовать полигон. Но функция расширения полигона не работает как следует -
https://www.dropbox.com/s/8vyr30974o...creen.png?dl=0
То есть если мало точек, то расширяет пропорционально нормально, но если более-менее много точек, все плохо идут искажения.
Подскажите пожалуйсто что не так в этой функции
function extendPolygon(distance, polyline) {
// define number of points
var numPts = polyline.getPath().getLength();
// define bounds/borders variable
var bounds = new google.maps.LatLngBounds();
// loop through number of points
for (i=0; i< numPts; i++) {
// extend bounds/borders
// TODO: findout exactly how extending? carefult debug
bounds.extend(polyline.getPath().getAt(i));
}
// getting the center of polygon
var center = bounds.getCenter();
// define the extended polygon points
var extendedPolyPts = [];
// loop through number of points
for (var i=0; i< numPts; i++) {
// get heading
var heading = google.maps.geometry.spherical.computeHeading(center,polyline.getPath().getAt(i));
// get initialDist
var initialDist = google.maps.geometry.spherical.computeDistanceBetween(center,polyline.getPath().getAt(i));
// get extendedDist
var extendedDist = (initialDist + distance);
// extended point
var extendedPt = google.maps.geometry.spherical.computeOffset(center, extendedDist, heading);
// push extended point to the expended polygon array
extendedPolyPts.push(extendedPt);
}
// if global extendedPoly object exist destroy it
// if there is input value and it's not empty
if(!$.isEmptyObject(extendedPoly)) extendedPoly.setMap(null);
// re-define the extendedPoly polygon on the map
extendedPoly = new google.maps.Polygon({
map: map,
paths:extendedPolyPts,
fillColor: colors[2],
strokeWidth:2,
fillOpacity:0.15,
strokeColor: colors[2],
strokeOpacity:0.5,
draggable: true,
editable: true
});
// copy the locs values to the tmp_locs
var tmp_locs = locs;
// rebuild markers on extended poly
app.markers.rebuild(extendedPoly, polyline);
// on drag bounds
google.maps.event.addListener(extendedPoly, 'dragend', function() {
// rebuild the extended poly
app.markers.rebuild(extendedPoly, polyline);
});
// on mouse up
google.maps.event.addListener(extendedPoly, 'mouseup', function() {
// rebuild the extended poly
app.markers.rebuild(extendedPoly, polyline);
});
}
Возможна платная благодарность.
Спасибо.