Radius um einen Punkt in der Google-Karte zeichnen

Ich benutze die Google Maps API und habe Marker hinzugefügt. Jetzt möchte ich einen 10-Meilen-Radius um jeden Marker hinzufügen, d.h. einen Kreis, der sich beim Zoomen entsprechend verhält. Ich habe keine Ahnung, wie das zu tun, und es scheint, es ist nicht etwas gemeinsam.

Ich habe ein Beispiel gefunden, das gut aussieht, und Sie können auch einen Blick auf Google Latitude werfen. Dort werden Markierungen mit einem Radius verwendet, genau wie ich sie haben möchte.

Update: Google Latitude verwendet ein Bild, das skaliert ist, wie würde das funktionieren?

Die gängigste Methode zur Erreichung dieses Ziels scheint darin zu bestehen, ein GPolygon mit genügend Punkten zu zeichnen, um einen Kreis zu simulieren. Das Beispiel, auf das Sie verwiesen haben, verwendet diese Methode. Diese Seite enthält ein gutes Beispiel - suchen Sie im Quellcode nach der Funktion drawCircle.

Kommentare (1)

In der sphärischen Geometrie werden Formen durch Punkte, Linien und Winkel zwischen diesen Linien definiert. Sie haben nur diese rudimentären Werte, mit denen Sie arbeiten können.

Daher ist ein Kreis (im Sinne einer auf eine Kugel projizierten Form) etwas, das durch Punkte angenähert werden muss. Je mehr Punkte, desto mehr wird es wie ein Kreis aussehen.

Dabei ist zu beachten, dass Google Maps die Erde auf eine flache Oberfläche projiziert1 (man stelle sich vor, die Erde wird abgerollt und gestreckt und abgeflacht, bis sie quadratisch aussieht). Und wenn Sie ein flaches Koordinatensystem haben, können Sie 2D-Objekte darauf zeichnen, so viel Sie wollen.

Mit anderen Worten: Sie können einen skalierten Vektorkreis auf einer Google Map zeichnen. Der Haken an der Sache ist, dass Google Maps dies nicht von Haus aus anbietet (sie wollen so nah an den GIS-Werten bleiben, wie es pragmatisch möglich ist). Sie geben Ihnen nur GPolygon, das Sie verwenden sollen, um einen Kreis zu approximieren. Wie auch immer, this guy did it using vml for IE and svg for other browsers (see "SCALED CIRCLES" section).

Nun, zurück zu Ihrer Frage über Google Latitude mit einem skalierten Kreis Bild (und das ist wahrscheinlich die nützlichste für Sie): wenn Sie wissen, der Radius des Kreises wird sich nie ändern (zB es ist immer 10 Meilen um einen Punkt), dann die einfachste Lösung wäre, ein GGroundOverlay, die nur ein Bild url + die GLatLngBounds das Bild darstellt zu verwenden. Sie müssen dann nur noch die GLatLngBounds, die Ihren 10-Meilen-Radius repräsentieren, einfügen. Sobald Sie das haben, die Google Maps api Griffe Skalierung Ihr Bild als der Benutzer zoomt in und aus.

Kommentare (1)

Ich hatte dieses Problem in der Vergangenheit, also habe ich diese Diskussion als Lesezeichen gespeichert.

Zusammengefasst können Sie das:

  1. Schauen Sie sich den Quellcode dieses Kreisfilter's an und finden Sie heraus, wie Sie ihn in Ihr Projekt einbinden können.
  2. Zeichnen Sie ein GPolygon mit genügend Punkten, um einen Kreis zu simulieren.
  3. Erzeugen Sie eine KML-Datei, indem Sie http://www.nearby.org.uk/google/circle.kml.php?radius=30miles&lat=40.173&long=-105.1024 ändern und dann importieren. In Google Maps können Sie die URI einfach in das Suchfeld einfügen und sie wird auf der Karte angezeigt. Ich bin mir allerdings nicht sicher, wie Sie das mit der API machen können.
Kommentare (0)