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 3. Jul 2012, 13:21
Hallo Greg,

vielen Dank für Dein Interesse und das Lob!

Bitte entschuldige, daß ich Dich so lange habe warten lassen. Das liegt daran, daß ich momenentan mehr Arbeit habe, als Zeit zur Verfügung steht. Dadurch sind leider etliche Anfragen länger liegen geblieben, als es höflich ist.

Zu Deiner Frage: Selbstverständlich kannst Du den Quelltext zur Ansteuerung des OpenLayer-Players haben. Allerdings muß ich Dich vorwarnen: Die Umsetzung ist absolut unvollständig und paßt wahrscheinlich nicht mehr zur aktuellen Frameworkversion.

Das Framework selbst ist in zwei Teile gegliedert:

Der erste Teil - der Kern - besteht aus einer DelphiToJavaScript-Bridge (D2JS-Engine), die ausschließlich über COM-Interfaces mit der JScript-Engine des IE-ActiveX kommuniziert. Damit kann auf beliebige JavaScript-Funktionen und -Objekte zugegriffen werden. Das geschieht in Form von Wrapper-Objekten, die über vorhandene JavaScript-Objekte gelegt werden oder die selbst neue JavaScript-Objekte erstellen.

Darauf baut der zweite Teil des Frameworks auf, der damit alle Objekte und Methoden des Google Maps API's zugänglich macht.

Genauso kann man das natürlich mit allen anderen JavaScript-Frameworks machen - es ist nur eine Frage des Aufwandes, den man treiben möchte. Darauf basieren dann auch die Anfänge der Umsetzung des OpenLayer-Players. Ich hatte das allerdings nur zum Testen geschrieben und hatte nicht geplant, es in dieser Form weiterzuentwickeln. Insofern ist es nur eine Studie nach dem Motto "So könnte man das auch machen...".

Zu den Gründen, weshalb ich den OpenLayers-Player nicht auf die Art in Delphi einbinden möchte:
JavaScript in Verbindung mit einem Browser(-Plugin) kommt von der Geschwindigkeit her nicht annähernd an ein kompiliertes Programm heran. Tests haben gezeigt, daß ein in Delphi geschriebener Player zur Darstellung von Kartendaten ohne Probleme um den Faktor 10 schneller ist, als eine Kombination aus Browser und JavaScript. Selbst auf einem gemächlichen Netbook sind ruckelfreie Animationen (wie das Verschieben der Karte oder die Veränderung des Zoomfaktors) möglich.
Deshalb investiere ich lieber die Zeit in einen nativen Delphi-Player. Für das Datenmaterial des Open StreetMap-Projektes ist das möglich - Google besteht in seinen Lizenzbedingungen (momentan) aber leider auf den ausschließlichen Zugriff über das JavaScript-API.

Du kannst den Ansatz des OpenLayers-Players aber gern weiterentwickeln. Um das Ganze dann auch mit der D2JS-Engine der neuen Version des Frameworks kompatibel zu machen, sind allerdings einige Anpassungen notwendig, da die Version 3.0 auch Delphi-seitig Interfaces unterstützen wird. Bei Fragen würde ich Dir selbstverständlich helfen.

Den Quelltext der Demo mit dem OpenLayers-Player schicke ich Dir per Email.

Viele Grüße
Thomas
Thomas Nitzschke
Google Maps mit Delphi

Geändert von Thom ( 3. Jul 2012 um 13:23 Uhr)
  Mit Zitat antworten Zitat
Borni

Registriert seit: 16. Aug 2004
Ort: Algermissen
89 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 16. Jul 2012, 12:30
Erstmal eine RIESENLOB, feine Arbeit, das gehört belohnt *Spende ist unterwegs*

und gleich die erste Frage:

Wie kann man auf einen Link im InfoFenster eines Markers, intern vom Programm reagieren, habe (noch) nichts gefunden.

Gruß Borni
  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 16. Jul 2012, 20:27
Hallo Borni,

vielen Dank für das Lob und die Spende!
Die aktuelle Frameworkversion und die Bonus-Units sind per Email zu Dir unterwegs.

Zu Deiner Frage:
Links können über das OnBeforeNavigate2-Ereignis der Browser-Komponente überwacht werden. Das funktioniert auch mit Links innerhalb des Info-Fensters. Legst Du den Inhalt des Info-Fensters selbst fest, lassen sich über das Framework sogar anonyme und Objekt-Methoden direkt aufrufen. Meinst Du so etwas?

Viele Grüße
Thomas
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
Borni

Registriert seit: 16. Aug 2004
Ort: Algermissen
89 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 17. Jul 2012, 00:01
JO, genau so, klappt es auch.... super

Gruß Borni
  Mit Zitat antworten Zitat
Borni

Registriert seit: 16. Aug 2004
Ort: Algermissen
89 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 18. Jul 2012, 18:47
@Thom: Gibt es eine Möglichkeit eine grosse Anzahl von Markern(Koordinaten sind bekannt) als Liste zu Google zu senden ( ca. 2500-5000 Stk), um auf noch mehr Geschwindigkeit zu kommen ?


Gruß Borni
  Mit Zitat antworten Zitat
Thom

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

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

  Alt 18. Jul 2012, 19:38
Du könntest die MarkerClusterer-Bibliothek aus den Zusatz-Units nehmen oder einen KML-Layer verwenden. MarkerClusterer kann intern eine große Anzahl von Markern verwalten und ein KML-Layer wird von Google gerendert - die Marker sind dann alle sichtbar, aber nicht mehr einzeln ansprechbar. Dazu bräuchtest Du einen Server, von dem Google die KML-Datei abholen kann. Mit einer lokalen Datei funktioniert das aber auch, wenn man zum Beispiel in das Programm zusätzlich einen HTTP-Server mit den Indy-Komponenten einbaut.
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
korffi

Registriert seit: 28. Sep 2006
3 Beiträge
 
#7

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

  Alt 24. Jul 2012, 08:22
Also in der autocomplete demo stürzt bei mir nix ab (win7x64,ie9,Dxe2 recompiled) egal was ich ins edit feld eintrag es sei denn ich tippe ein "t"

und zwar nur beim kleinen t da möchte er die map reloaden

kann mir einer sagen was da das problem ist ? (gibt leider kein onkeydown event was ich abfangen könnte um zu sehen was für ne taste ankommt im feld


thx im vorraus

korffi
  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 23:10 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