Google Maps V3: библиотека чертежей - PullRequest
9 голосов
/ 19 ноября 2011

Мне нравится новая библиотека чертежей для Google Maps v3.7, но у меня такое ощущение, что документация еще не завершена, и у меня есть пара вопросов:

  1. В документации упоминаются только события overlaycompleted и {overlay}completed, но я также нашел событие drawingmode_changed.Есть ли где-нибудь список событий?

  2. Есть ли способ получить ссылку (объект) на многоугольник, который мы рисуем, кроме ожидания, пока мы не закончим рисовать его и использования слушателя сoverlaycompleted как это делается в приведенном выше примере?

  3. Есть ли способ удалить вершины из многоугольника, просто нажав на них?Если нет, как бы вы поступили?

Ответы [ 3 ]

2 голосов
/ 09 июля 2012

Вы можете вызвать любое событие наложения при завершении, например, так.

google.maps.event.addListener(drawingManager, 'polygoncomplete', function(e) {
    //Your magic goes here 
});

overlaycomplete похоже на глобальное событие для любого наложения, такого как маркеры, полилинии, круги и многоугольники.но если вы хотите создать прослушиватель для определенного оверлея, просто измените overlay на желаемый оверлей: polygoncomplete, polylinecomplete, circlecomplete.

Я знаю, что эти вопросы старые, но явсе равно хотел поделиться своим ответом.

1 голос
/ 12 июня 2013

Очень старый вопрос, но у меня есть какое-то обновление по этому поводу, может быть, кто-то поможет.

  1. Есть несколько дополнительных событий для редактируемых фигур, которые могут быть полезны: https://developers.google.com/maps/documentation/javascript/overlays#user_editable_shapes_events

  2. Также не удалось найти решение для этого.

  3. Этот фрагмент кода показывает, как удалить вершину многоугольника / полилинии при щелчке левой кнопкой мыши:

google.maps.event.addListener(drawingManager, 'overlaycomplete', function (e) {
    if (e.type !== google.maps.drawing.OverlayType.MARKER) {
        // Switch back to non-drawing mode after drawing a shape.
        drawingManager.setDrawingMode(null);

        // Add an click event listener for newly-drawn shape
        // and remove polygon vertex if it was clicked
        var newShape = e.overlay;
        google.maps.event.addListener(newShape, 'click', function (e) {
            if (e.vertex !== undefined) {
                if (newShape.type === google.maps.drawing.OverlayType.POLYGON) {
                    var path = newShape.getPaths().getAt(e.path);
                    path.removeAt(e.vertex);
                    if (path.length < 3) {
                        newShape.setMap(null);
                    }
                }
                if (newShape.type === google.maps.drawing.OverlayType.POLYLINE) {
                    var path = newShape.getPath();
                    path.removeAt(e.vertex);
                    if (path.length < 2) {
                        newShape.setMap(null);
                    }
                }
            }
        });
    }
});
1 голос
/ 27 ноября 2011

После долгих поисков вот что я придумал:

  1. Я не смог найти список событий, кроме this .

  2. Я не смог найти ни одного.

  3. Нет, это невозможно, но я поместил запрос в , и мне показали небольшой трюк , использующий щелчок правой кнопкой мыши. К сожалению, это не сработало для меня, так как мне нужно было щелкнуть левой кнопкой мыши.

Надеюсь, это поможет другим

...