Einzelnen Beitrag anzeigen

Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#213

AW: Google Maps über COM (Component Object Model)

  Alt 13. Apr 2012, 12:04
@DelphiFan:

[...] ich experimentiere gerade mit "Direction Draggable" und habe ein paar Fragen zu Erweiterungen, welche in der Web-Applikation Motoplaner verwendet wird [...]
Das ist unglücklicherweise eine Anwendung, die noch die Version 2 des API's (deprecated) verwendet. Schau Dich mal um, ob Du eine vergleichbare Karte findest, die das aktuelle API verwendet. Dann könntest Du Dir den JavaScript-Quelltext anschauen und sinngemäß mit Delphi nachbauen.

- wie kann ich Positions-Marker wieder löschen, vgl. Klick auf Marker -> Dialog
Marker allgemein unsichtbar machen: Marker.SetMap(TMap(nil)).
Marker in einer Route: Diese Marker werden vom TDirectionsRenderer-Objekt automatisch bei allen Zwischenpunkten gesetzt. Zugriff erhält man darauf über das TDirectionsResult-Objekt (DirectionsRenderer.GetDirections). Hier müßte als der Zwischenpunkt entfernt werden.

- wie kann ich das Aussehen des Positions-Marker verändern -> verschiebbarer Positions-Marker Bsp. Rund mit Plus
Über das TDirectionsRendererOptions-Objekt (DirectionsRendererOptions.MarkerOptions).

- wie kann ich den Maus-Cursor verändern Bsp. auf freier Karte Fadenkreuz
Über das TMapOptions-Objekt (MapOptions.DraggableCursor).

- wie kann ich die aktuelle Position des Positions-Marker LAT/LNG evntl. HÖHE ermitteln
Mit dem TElevationService-Objekt (ElevationService.GetElevationForLocations(...));

- wie kann ich am einfachsten die Route bzw. Punkte aus GoogleMap in Delphi speichern und wieder aus Delphi in GoogleMap übertragen
Datenbank, Ini-Datei, KML-Datei, ... je nach Vorliebe. Die direkte Unterstützung von KML-Dateien durch das Framework ist in Planung. Momentan arbeite ich an der Unterstützung des JSON-Formats.

- wie kann ich die aktuelle Länge der gesamten Route und von ersten Punkt zum verschiebbaren Positions-Marker ermitteln
Diese Informationen werden alle im TDirectionsResult-Objekt zurückgeliefert (zum Beispiel die Länge des ersten Streckenabschnitts: DirectionsResult.Routes[0].Legs[0].Distance.Value)

- wie kann ich eine Liste (Track) aus der Route erzeugen Bsp. alle 100m entlang der Route LAT/LNG und evntl. HÖHE ermitteln und als Liste abspeichern
Eine Route besteht aus einer Liste von Punkten (Lat/Lng-Paaren). Diese haben allerdings nicht den selben Abstand voneinander. Die Anzahl der Punkte ist abhängig von der erforderlichen Genauigkeit (Entfernung Start- zu Zielpunkt und wie "verwinkelt" die Strecke ist). Auch diese Punkte befinden sich im TDirectionsResult-Objekt.


@EWeiss:

Vielen Dank!!!


@Manfred:

Auch an Dich vielen Dank!
Die Ermittlung von Geodaten ist eine rechenintensive Angelegenheit - deshalb begrenzt Google die Anfragen sowohl bezüglich der Anzahl als auch bezüglich der zeitlichen Abfolge. Die Alternative wäre eine Premier-Lizenz.
Ich empfehle folgende Vorgehensweise:
  1. Geocoding eines Wertes
  2. Wert OK -> weiter mit 1.
  3. Timeout (experimentell bei etwa 5-10 Sekunden)
  4. Weiter mit 1.
Thomas Nitzschke
Google Maps mit Delphi

Geändert von Thom (13. Apr 2012 um 12:18 Uhr)
  Mit Zitat antworten Zitat