Ich fand die Google Maps V2-Polygon-Implementierung sehr einschränkend für die Bedürfnisse, die ich hatte und löste sie, indem ich ein benutzerdefiniertes Overlay erstellte. Meine Gruppe ist derzeit auf IE6 festgefahren, so dass ich noch auf Google Maps V3 umstellen muss - aber ein kurzer Blick auf die API zeigt, dass Sie wahrscheinlich eine ähnliche Sache wie in V2 mit V3 machen könnten.
Im Grunde ist die Idee:
- Erstellen eine benutzerdefinierte Overlay
- Bestücken Sie es mit Ihrem eigenen SVG/VML Polygonen und ein Drag-Event zu diesem Objekt benutzerdefinierten Polygon
befestigen Benutzerdefinierte Überlagerungen:
Hier sind einige Informationen, die Sie bei der Erstellung Ihrer Daten unterstützen r eigene benutzerdefinierte Overlay:
http://code.google.com/apis/maps/documentation/javascript/overlays.html#CustomOverlays
Erstellen eines eigenen „Dragable“ Polygon Objekt:
Sobald Sie, dass Sie möchten, erhalten nach unten werden Ihre eigene Polygone dem benutzerdefinierten Overlay hinzufügen statt Verwenden von GPolygons. Ich habe den schmerzhaften Prozess des Erlernens von SVG/VML und des Schreibens einer Bibliothek zum gemeinsamen Überbrücken von SVG/VML durchgesehen - Sie könnten das tun, aber ich würde Ihnen empfehlen, zunächst eine andere Bibliothek wie Raphaël zu verwenden.
http://raphaeljs.com/
Raphaël Verwendung finden Sie eine ganze Menge Zeit zu sparen, um herauszufinden, wie Cross-Browser-Vektor-Grafik (Polygon) Funktionalität zu erhalten - und am besten von allen unterstützt Drag Ereignisse schon, hier ist ein Beispiel aus ihrer Bibliothek:
http://raphaeljs.com/graffle.html
Sobald Sie eine benutzerdefinierte Overlay haben, und Sie sind in der Lage einige Raphaël Objekte auf es der letzte Schritt zu übersetzen ist, die Koordinaten, die Sie wollen von einem Lat/Lng Wert auf einen Pixelwert zu werfen . Dies ist in der MapCanvasProjection von V3 zur Verfügung:
http://code.google.com/apis/maps/documentation/javascript/reference.html#MapCanvasProjection
Sie fromLatLngToDivPixel können die tatsächlichen Pixelwerte für die Punkte auf Ihrem Raphael Polygon um herauszufinden, was es zeichnen, dann ist es mit einem zu dem Overlay hinzufügen Ereignis ziehen
Im Nachhinein - ich habe festgestellt, dass meine Polygon-Objekte viel schneller als GPolygon-Objekte in V2 durchgeführt - ich weiß nicht, wie sie in V3 ausführen, aber ich habe festgestellt, dass das Erstellen eigener Polygone direkt mit SVG/VML zu einem viel leichteren Objekt Sie haben mehr Kontrolle direkt. Ich bin nicht sicher, ob Google jetzt SVG/VML oder Canvas verwendet, um ihre Polygone zu zeichnen - es hat sich mehrmals in den Versionen geändert. – John