AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Google Maps über COM (Component Object Model)
Thema durchsuchen
Ansicht
Themen-Optionen

Google Maps über COM (Component Object Model)

Ein Thema von Thom · begonnen am 23. Dez 2010 · letzter Beitrag vom 22. Mai 2022
Antwort Antwort
Thom

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

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

  Alt 19. Apr 2012, 23:34
Du bist ja fleißig!

Die zusätzlichen Punkte sind im Array ViaWayPoints des TDirectionsLeg-Objektes enthalten. Siehe DirectionsLeg.
Da es sich um ein normales Array handelt, kann man dort Werte hinzufügen oder löschen. Allerdings befürchte ich, daß der DirectionsRenderer auf derartige Veränderungen nicht reagiert - also die Strecke neu berechnet und anzeigt.
Soll die Strecke neu eingelesen werden (zum Beispiel aus einer Datei oder Datenbank) müssen die zusätzlichen Wegpunkte wahrscheinlich dem WayPoints-Array des TDirectionsRequest-Objektes hinzugefügt werden, um bei der Berechnung berücksichtigt zu werden.
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
DelphiFan2008

Registriert seit: 4. Dez 2008
84 Beiträge
 
Delphi XE2 Starter
 
#2

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

  Alt 21. Apr 2012, 19:51
Hi Thom,

danke für die schnelle Antwort (wie immer ). Nun habe ich alle Informationen für die Streckenplanung d.h. ich bekomme alle Daten aus GoogleMap um die geplante Route abzuspeichern und somit zu rekonstruieren und die feine Auflösung um daraus (evntl. reduziert mit Douglas-Peucker Alg.) ein Track zu erzeugen. Gefällt mir sehr gut. Nun folgt die GUI mit der entsprechenden Bedienung Marker setzen bzw. löschen etc. inkl. für mich wichtig Höhenprofil möglichst parallel zu ermitteln - evntl. Threat - macht da GoogleMap mit, wenn die Hauptapplikation auf GoogleMap "parallel" zum Threat zugreift?

Gruss DelphiFan2008
  Mit Zitat antworten Zitat
Thom

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

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

  Alt 21. Apr 2012, 20:53
Das Framework ist nicht threadsicher. Darauf habe ich bisher keinen Wert gelegt, da die JavaScript-Engine des Internet Explorer, auf die das Framework zugreift, auch nicht threadsicher ist. Solange das Framework diese Script-Engine verwendet, wird sich daran auch nichts ändern. Geplant ist aber, irgendwann auf eine andere Engine umzusteigen. Dann könnte sich das auch ändern. An JavaScript als Basis führt aber zur Zeit kein Weg vorbei, da das JavaScript-API momentan den einzigen legalen Zugriff auf Google Maps darstellt (das Flash-API ist als deprecated gekennzeichnet).

Da aber alle Abfragen des API's asynchron erfolgen (das heißt, daß zum Beispiel während der Abfrage des Höhenprofils die Anwendung nicht blockiert wird) und nach Ausführung eine Callback-Methode aufgerufen wird, sollte der Zeitverlust im Vergleich zur Verwendung von Threads nur minimal sein. Das heißt: Im Prinzip ist das nicht viel anders als eine Datenabfrage per Thread mit anschließendem Synchronize.

Bezüglich der Wegpunkte bei einer DirectionsRequest-Anfrage:
Man kann die zusätzlichen Wegpunkte aus dem ViaWayPoints-Array mit dem Flag StopOver:=false versehen (ist default true). Damit wird die Route an dieser Stelle nicht geteilt. Siehe DirectionsWaypoint.
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
DelphiFan2008

Registriert seit: 4. Dez 2008
84 Beiträge
 
Delphi XE2 Starter
 
#4

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

  Alt 22. Apr 2012, 12:02
Hallo Thom,

Thread werde ich wohl mal zurückstellen, auch nicht so wichtig. Jetzt muß ich mich jedoch wegen dem Thema "wie erfasse ich ein Klick auf eine Route, Leg oder ViaWayPoints", bzw. wie verknüpfe ich ein OnXxx Ereignis um z.B. ein "Leg" oder "ViaWayPoints" zu löschen?

In meiner Applikation, in welcher ich mit Marker arbeite, welche zur Laufzeit durch mein Programm entstehen ist die Sache klar.

Routine in der MainForm :
procedure OnMarkerDrag(Sender: TObject; MouseEvent: TMouseEvent); dann
MyMarker.MarkerPos.OnDrag := OnMarkerDrag; und
Delphi-Quellcode:
procedure MainForm.OnMarkerDrag(Sender: TObject; MouseEvent: TMouseEvent);
begin
  ...
end;
Bei der Verwendung von directions sieht die Sache (für mich) anders aus, hier verwaltet GoogleMap die Erstellung/Reaktion direkt während der Laufzeit. Wie kann ich hier auf die Events reagieren?

Gruß DelphiFan2008
  Mit Zitat antworten Zitat
Thom

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

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

  Alt 24. Apr 2012, 08:02
Frustrierende Antwort: Gar nicht...

Der DirectionsRenderer besitzt leider nur ein einziges dokumentiertes Event, das ausgelöst wird, nachdem die Route durch den Benutzer verändert wurde. Alles andere (wie zum Beispiel ein Klick auf die Route oder einen Marker) wird intern nach dem Black-Box-Prinzip verarbeitet. Deshalb kann ich Dir nur empfehlen, ein eigenes TDirektionsRenderer-Objekt zu programmieren. Alles was dazu notwendig ist (TMarker, TPolyline, TDirectionsResult), ist vorhanden.

Entschuldige bitte die verspätete Antwort: Ich hatte lange herumgebastelt, um eine Lösung auf Basis des TDirectionsRenderer-Objektes aus dem API zu finden - sich nur auf undokumentierte Dinge zu verlassen, bringt auf Dauer aber leider auch nichts.

Das bringt mich aber auf die Idee, später - wenn die Homepage fertig ist - einen Bereich für User-Erweiterungen einzurichten.
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
DelphiFan2008

Registriert seit: 4. Dez 2008
84 Beiträge
 
Delphi XE2 Starter
 
#6

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

  Alt 25. Apr 2012, 22:43
Hi Thom,

Zitat:
Deshalb kann ich Dir nur empfehlen, ein eigenes TDirektionsRenderer-Objekt zu programmieren. Alles was dazu notwendig ist (TMarker, TPolyline, TDirectionsResult), ist vorhanden.
Für die Umsetzung eines eigenes TDirektionsRenderer-Objekt sehe ich keinen Ansatz. Verwendung TMarker, TPolyline o.k., habe ich in vielfältiger Weise in meiner App. Die Verknüpfung mit TDirectionsResult stellt mich vor ein Rätsel. Kannst du in kurzen Worten deine Idee zum "Ansatz" erklären?

Meinst du BikeRouteToaster oder GPSies macht dies in ähnlicher Weise, siehe JPG? Bin leider nicht in der Lage über den Browser/Quelltext den JavaScript Code zu verstehen

Gruß DelphiFan2008
Miniaturansicht angehängter Grafiken
routeedit_a.jpg   routeedit_b.jpg  

Geändert von DelphiFan2008 (26. Apr 2012 um 11:02 Uhr)
  Mit Zitat antworten Zitat
hewy

Registriert seit: 2. Aug 2006
Ort: Arni (Region Zürich) Schweiz
83 Beiträge
 
Delphi XE5 Enterprise
 
#7

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

  Alt 4. Mai 2012, 12:37
Hallo

{Nachtrag: Alles klar konnte es selbst lösen. in dem ich den GeoCoder in ruhe lasse. Danke }

Das Framwork liegt schon länger auf meiner ToDo Liste, nun ist es endlich soweit.
Hab eine kleine Applikation erstellt in welche ich Lat/Long eingeben und mir dann einen Marker an die Eingegebene Position setzt.
Nun scheint es so dass eine Optimierung vorgenommen wird bevor der Marker an die Position gelangt.
Daher meine Frage: wie setze ich einen Marker an genau die Koordinaten welche eingegeben werden?

Die folgenden Koordinaten hatte ich zum Testen verwendet: Diese sollte nach meiner Auffassung eine geradelinie ergeben.
Dem ist aber nicht so.

47.47356 8.4646488
47.47686 8.4679488
47.48021 8.4712988
47.48361 8.4746988
47.48706 8.4781488
47.49056 8.4816488
47.49411 8.4851988
47.49771 8.4887988
47.50136 8.4924488
47.50506 8.4961488
47.50881 8.4998988
47.51261 8.5036988
47.51646 8.5075488
47.52036 8.5114488
47.52431 8.5153988
47.52831 8.5193988

Besten Dank und Gruss
Heinrich^
Heinrich Wyssen

Geändert von hewy ( 4. Mai 2012 um 14:45 Uhr)
  Mit Zitat antworten Zitat
Thom

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

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

  Alt 4. Mai 2012, 16:36
@DelphiFan2008:

Entschuldige bitte die späte Antwort.
Ja - es sieht wirklich so aus, als ob die beiden von Dir genannten Beispiele die Route mit eigenen Mitteln anzeigen und nicht das DirectionsRenderer-Objekt aus dem API benutzen. Will man etwas mehr Einflußmöglichkeiten (wie zum Beispiel Kontextmenüs oder Ereignishandler für die einzelnen Wegpunkte), ist das DirectionsRenderer-Objekt leider völlig ungeeignet, da es nach dem Black-Box-Prinzip so gut wie alle Funktionen kapselt und nur sehr geringe Einflußmöglichkeiten durch den Programmierer zuläßt.

Momentan habe ich leider keine Zeit, ein alternatives Objekt zu entwickeln, da ich mit Hochdruck an der Fertigstellung der Version 3 des Frameworks arbeite. Das ist aber auf der ToDo-Liste vermerkt.


@Heinrich:

Die Marker befinden sich doch auf einer Linie!?
marker.jpg
Falls das bei Dir nicht der Fall sein sollte, wäre es schön, wenn Du mal den Quelltext und/oder einen Screenshot zeigen würdest.

Edit: Alles klar - ich hatte Deinen Nachtrag zu spät gelesen...
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

(?)

LinkBack to this Thread

Erstellt von For Type Datum
DELPHI | (google maps) This thread Refback 11. Nov 2011 09:07
Twebbrowser HTML tag to UniHTMLFrame1 - uniGUI Discussion Forums This thread Refback 4. Nov 2011 06:52
DoraDev1975: google maps This thread Refback 23. Sep 2011 08:18
delphi osm - Google Search Post #0 Refback 19. Sep 2011 09:02
DoraDev1975: ?ิ????? 2011 This thread Refback 11. Sep 2011 16:39
DoraDev1975 This thread Refback 30. Aug 2011 10:13
Untitled document This thread Refback 25. Jun 2011 19:57
Interact with Google Maps in a TWebBrowser from Delphi | Ramblings This thread Refback 26. Jan 2011 05:12
google maps mit delphi link - Google Search This thread Refback 24. Jan 2011 14:24
google maps mit delphi - Google Search This thread Refback 24. Jan 2011 14:20
Untitled document This thread Refback 19. Jan 2011 21:49

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz