Я обнаружил, что реализация многоугольника Google Maps V2 очень ограничивает мои потребности, и решил ее путем создания пользовательского наложения.Моя группа в настоящее время застряла на IE6, поэтому мне еще предстоит перейти на Google Maps V3 - но быстрый взгляд на API показывает, что вы, вероятно, могли бы сделать то же самое, что я делал в V2 с V3.
По сути, идея такова:
- Создание пользовательского наложения
- Заполните его своими собственными SVG / VML-полигонами и присоедините событие перетаскивания к этому пользовательскому объекту-полигону
Пользовательские оверлеи:
Вот некоторая информация, с которой можно начать создавать свои собственные пользовательские оверлеи:
http://code.google.com/apis/maps/documentation/javascript/overlays.html#CustomOverlays
Создание собственного«Перетаскиваемый» объект многоугольника:
После того, как вы это сделаете, вы захотите добавить свои собственные многоугольники в пользовательское наложение вместо использования GPolygons.Я прошел через болезненный процесс изучения SVG / VML и написания библиотеки для объединения SVG / VML - вы могли бы сделать это, но я бы порекомендовал начать с попытки использовать другую библиотеку, например Raphaël.
http://raphaeljs.com/
Использование Raphaël сэкономит вам много времени, пытаясь выяснить, как получить кросс-браузерную функциональность векторной графики (Polygon) - и, что лучше всего, она уже поддерживает события перетаскивания, вот пример из ихбиблиотека:
http://raphaeljs.com/graffle.html
После того, как у вас есть пользовательское наложение, и вы можете добавить на него несколько объектов Raphaël, последний шаг - это перевод нужных координат из значения широты / долготы.в значение пикселя.Это доступно в MapCanvasProjection версии V3:
http://code.google.com/apis/maps/documentation/javascript/reference.html#MapCanvasProjection
. Вы можете использовать fromLatLngToDivPixel, чтобы выяснить, каковы действительные значения пикселей для точек на многоугольнике Raphael, нарисуйте его, затем добавьтеэто наложение с событием перетаскивания.