Вопрос по polygon, google-maps-api-3, javascript, jquery, google-maps – Извлеките чертежManager путь многоугольника Google Maps по нажатию

8

У меня есть карта Google с включенным менеджером чертежей, где пользователь может нарисовать многоугольник и сохранить его в моей базе данных. Я добавил прослушиватель событий в объект DrawingManager для события overlaycomplete. Когда событие вызывается, координаты многоугольника записываются в скрытое поле. Это прекрасно работает - единственная проблема заключается в том, что если отдельные вершины перетаскиваются / меняются после этой точки, событие не запускается. Мне нужно либо обновить поле при (любом) изменении, либо пройтись по вершинам многоугольника, когда пользователь нажимает «Отправить» и записать их в скрытое поле. Я не могу понять, как заставить это работать, но вы можете увидеть, что у меня есть здесь:http://jsfiddle.net/5Y4WT/21/

HTML:

<div id="map_canvas" style="width:500px; height:450px;"></div>
<form method="post" accept-charset="utf-8" id="map_form">
  <input type="text" name="vertices" value="" id="vertices"  />
  <input type="button" name="save" value="Save!" id="save"  />
</form>

JavaScript:

var map; // Global declaration of the map
var iw = new google.maps.InfoWindow(); // Global declaration of the infowindow
var lat_longs = new Array();
var markers = new Array();
var drawingManager;
function initialize() {
    var myLatlng = new google.maps.LatLng(40.9403762, -74.1318096);
    var myOptions = {
        zoom: 13,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP}
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    drawingManager = new google.maps.drawing.DrawingManager({
    drawingMode: google.maps.drawing.OverlayType.POLYGON,
    drawingControl: true,
    drawingControlOptions: {
                position: google.maps.ControlPosition.TOP_CENTER,
                drawingModes: [google.maps.drawing.OverlayType.POLYGON]
                },
                        polygonOptions: {
                            editable: true
                        }
            });
            drawingManager.setMap(map);

            google.maps.event.addListener(drawingManager, "overlaycomplete", function(event) {
                var newShape = event.overlay;
                newShape.type = event.type;
            });

            google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) {
                $('#vertices').val(event.overlay.getPath().getArray());
            });
        }
 initialize();

$(function(){
    $('#save').click(function(){
        //iterate polygon vertices?
    });
});

Ваш Ответ

0   ответов

Похожие вопросы