Delphi-PRAXiS
Seite 39 von 55   « Erste     29373839 404149     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Google Maps über COM (Component Object Model) (https://www.delphipraxis.net/157004-google-maps-ueber-com-component-object-model.html)

Tonic1024 22. Mär 2013 12:54

AW: Google Maps über COM (Component Object Model)
 
Du erwischt mich unvorbereietet :-D

Ich werd mal intern was klären, auch wie ich das "neue" Projekt zeitlich einordnen darf/soll, und eine Testumgebung vorbereiten und Anfang der Woche auf das Angebot zurückkommen wenn das okay ist.

[Edit]Ach... Ich hab ja Urlaub.:wall: Nach Ostern, ja?[/Edit]

Gruß,

Toni

Thom 22. Mär 2013 13:07

AW: Google Maps über COM (Component Object Model)
 
Kein Problem.
Da wünsche ich Dir einen erholsamen Urlaub und schöne Osterfeiertage - vorzugsweise ohne Schnee... :thumb:

Viele Grüße
Thomas

BBoy 23. Mär 2013 18:04

AW: Google Maps über COM (Component Object Model)
 
Bevor ich alle Seiten lese... Weißt du wann in etwa V3 kommen wird? Nur so etwa....

Wo finde ich eigentlich die: Geometrie-Bibliothek?

Thom 23. Mär 2013 18:14

AW: Google Maps über COM (Component Object Model)
 
Dauert wahrscheinlich noch einige Wochen. Das liegt daran, daß ich zwischendurch noch einige andere Dinge fertigstellen muß.

Die Geometrie-Bibliothek befindet sich in der Unit gmLibrariesGeometry.pas.

alibaba 25. Mär 2013 13:19

AW: Google Maps über COM (Component Object Model)
 
Nur mal zum Nachdenken...

Bin gerade dabei ein Delphi Programm zu portieren,
Ziel ist möglichst Plattformunabhängig zu operieren,
was liegt also näher als das ganze von Delphi nach Javascript
zu portieren und im Browser auszuführen.

Zwei Tools hab ich gefunden mit denen das zu funktionieren scheint:

1: dhtmlxSuite http://dhtmlx.com/

Grid, Edit, Form, Windows usw. mit einem funktionierentem Connector für diverse Datenbanken.

2: Leaflet http://leafletjs.com/

Map Ersatz bzw. Zwischenschicht für Google Maps und allen möglichen anderen OSM, Nokia, Bing ...
Superschnell und mit allem was man sich wünscht...


Klar das das trotzdem ne Menge Arbeit mit sich bringt aber es lohnt sich, Anbindung an Websockets, WebRTC usw. sind dann ein Kinderspiel.

FROHE OSTERN
lg
Albert

Thom 25. Mär 2013 14:18

AW: Google Maps über COM (Component Object Model)
 
:gruebel: OK. Ich habe nachgedacht...

Hallo Albert,

vielen Dank für Deine Vorschläge! Aber ich vermute, Du hast den Sinn dieses Frameworks (und damit aller anderen, im ersten Beitrag verlinkten Komponenten) mißverstanden:
Das Google Maps API ist von Haus aus eine reine JavaScript-Lösung. Da muß man nichts umstellen, portieren oder dergleichen. Will oder muß man plattformübergreifen für einen Browser entwickeln, nutzt man einfach JavaScript und fertig.

Hier geht es aber darum, Delphi-Entwicklern die Nutzung zu ermöglichen, ohne selbst eine einzige Zeile JavaScript schreiben zu müssen. Das API wird übrigens im Browser (TWebBrowser) mit JavaScript ausgeführt (das ist auch die einzige legale Möglichkeit des Zugriffs).

Das, was Du vorschlägst, wäre ein JavaScript-Wrapper für einen Delphi-Wrapper für JavaScript... :wink:

Und ganz nebenbei: Ich mag Delphi (Pascal) als Programmiersprache. Sie ist mir wesentlich lieber als JavaScript. Das ist natürlich Geschmackssache und jeder kann dazu eine andere Meinung haben. Es gibt viele Entwickler, die Sprachen ohne Typisierung vorziehen und die mit Delphi nicht zurechtkämen.
Dazu kommt, daß eine kompilierte Anwendung bei effektiver Programmierung wesentlich schneller ist. Das kann ich deshalb mit Bestimmtheit sagen, da ich auch an Lösungen arbeite, die von TWebBrowser und JavaScript unabhängig sind. Dort ist die Darstellung locker um den Faktor 10 schneller.

In Sachen Plattformunabhängigkeit tut sich ja bei Delphi auch einiges. FireMonkey ist trotz seines schlechten Rufs und der unbestreitbaren Bugs ein Framework, das enormes Potential aufweist. Dank seiner vektororientierten Darstellung eignet es sich logischerweise hervorragend, vektorielle Daten - wie zum Beispiel geografische Informationen - darzustellen. Bei den kachelbasierenden (JavaScript-) Playern ist man dagegen darauf angewiesen, vom Server die vorgerenderten Tiles zu erhalten.

Ich wünsche Dir natürlich viel Erfolg bei der Umstellung von Delphi nach JavaScript und ebenfalls ein frohes Osterfest!

Viele Grüße
Thomas Nitzschke

alibaba 25. Mär 2013 15:12

AW: Google Maps über COM (Component Object Model)
 
:? UUPS, wollte Dir nicht zu nahe treten, ist halt meine Meinung,

denn Sinn Deines Frameworks und der Komponenten verstehe ich sehr wohl und habe die
grösste Hochachtung vor Deiner Arbeit, hab sehr viel davon gelernt.

Meine Anregung wäre gewesen statt der Google JS Api die JS Api von Leaflet zu nehmen
damit wäre man nicht von Google abhängig und kann dann mit dem gleichen Code in Delphi
auch andere Maps (Lizenzkosten) verwenden.

Delphi ist und bleibt auch für mich die beste IDE (zumindest bis Delphi 7) ;-)
Und zu Windows schweig ich.
lg
Albert

Thom 25. Mär 2013 20:31

AW: Google Maps über COM (Component Object Model)
 
Ich muß mich entschuldigen - ich hatte Deine Vorschläge falsch verstanden. :pale:

Wegen der Nutzung anderer Player, die die Daten des OpenStreetMap Projektes nutzen, kamen schon mehrere Anfragen. Mit der im Framework verwendeten Delphi-to-JavaScript-Bridge ließe sich das auch ohne Probleme bewerkstelligen - es wäre nur eine Frage des zeitlichen Aufwandes.

Ein paar Überlegungen meinerseits dazu:

Player, die OpenStreetMap-Daten verwenden, gibt es etliche:
Auf der eines Seite gibt es die reinen JavaScript Lösungen, die einerseits weitestgehend plattformunabhängig nutzbar sind, andererseits aber immer eine JavaScript-Engine und damit in der Regel einen Browser benötigen. Genannt seien da als Beispiele CloudMade, OpenMapQuest, Leaflet und OpenCycleMap.

Darauf aufbauend gibt es die Gruppe von Komponenten, die diese JavaScript-Player in Browser-Komponenten für Delphi zur Verfügung stellen:
So hat zum Beispiel TMS seit einiger Zeit WebOSMaps im Angebot, mit dessen Hilfe OpenLayers in einer auf TWebBrowser basierenden Komponente in Delphi-Anwendungen genutzt werden kann. Zum Preis-Leistungs-Verhältnis: :wall:

ECMap bietet in der Delphi-Komponente neben Google Maps auch Google Earth, Bing Maps, CloudMade, OpenMapQuest und Leaflet an und setzt neben TWebBrowser auch Chromium Embedded an. Dieses Paket ist sehr umfangreich und hat dadurch auch einen entsprechenden Preis.

Auf der anderen Seite gibt es dann die Komponenten, die ohne JavaScript auskommen:
Die Firma THB Componentware aus Österreich bietet einen Komponente namens THBImage an, die Vektor- und Rasterdaten aus dem OpenStreetMap Projekt darstellen kann. Dazu gibt es eine Online-Demo, für die man ein ActiveX installieren muß. Beim Download des ActiveX-Controls schlägt aber sofort mein Virenscanner Alarm und entfernt den Download wieder von der Platte. Der Hersteller bekommt es offenbar noch nicht einmal hin, sein Plugin zu signieren. Wirklich sehr vertrauenserregend... :stupid:

StelifeMap ist eine Komponente, die Rasterdaten (also auch wieder Kartenkacheln) ohne Browser-Komponente in Delphi darstellen kann. Der Preis von momentan 20,48€ + MwSt. für die Komponente ohne Quelltext liest sich ganz fair. Wie gut die Komponente selbst ist, kann ich nicht sagen, da ich noch nicht zum Testen gekommen bin. (*)

Trotz aller Freiheit der OpenStreetMap Daten sollte man einige Dinge nicht vergessen:
In dichtbesiedelten Gebieten - vor allen Dingen in Mitteleuropa - ist der Qualität der Karten teilweise erheblich besser, als bei Google Maps. Das ändert sich schlagartig, wenn man "den Rest der Welt" betrachtet. Das ist auch logisch und verständlich: Schließlich haben viele Menschen zum Beispiel in Südamerika oder Afrika andere Sorgen, als mit einem GPS-Gerät durch die Gegend zu laufen. Trotzdem wächst natürlich jeden Tag die Datenmenge enorm. Dadurch ist es schon eine sehr anspruchsvolle Aufgabe, selbst eine Datenbank mit den OpenStreetMap-Daten aufzusetzen. Ich habe von vielen Projekten gelesen, die schon daran gescheitert sind.

Die Dienste, die Google Maps bietet, sind (momentan) unerreichbar. So werden zum Beispiel Routenanfragen innerhalb von einigen zehntel Sekunden beantwortet. Über OpenStreetMap dauert das bei längeren Strecken (ca. 500 km) auch mal 10 Sekunden und länger und die Länge der Route weicht dann unter Umständen um 1/5 von der Google Maps Route ab. Nicht umsonst ist gute Wegfindungssoftware (damit meine ich nicht nur für Straßen und Wege, sondern zum Beispiel auch für Spiele) extrem teuer.

Höhendaten sind in OpenStreetMap nicht flächendeckend verfügbar. Luftbilder - nun ja...

Der Download von OpenStreetMap Kacheln zwecks Offline-Nutzung ist zwar meistens erlaubt, wird aber nur in einem angemessenen Umfang geduldet, da hier Bandbreite und Serverkapazitäten arg strapaziert werden. Das kostet viel Geld, was wiederum irgendwo herkommen muß - und das ist bei OpenSource-Projekten nicht ganz so einfach. Und die Bereitschaft zu spenden ist leider eine recht unterentwickelte Eigenschaft. Geiz ist eben geil, auch wenn dadurch so manches tolle Projekt den Bach heruntergeht. Aber das ist schon wieder ein anderes Thema.

Das sind nur einige Beispiele. Damit will ich auf keinen Fall OpenStreetMap schlecht machen. Ein kommerzieller Anwender muß sich aber natürlich sehr genau überlegen, auf welche Daten er Wert legt und wie genau diese sein müssen. Und da werden schnell 10000 $ für eine Google Maps Lizenz zum Schnäppchen.

Damit stellt sich unterm Strich bezüglich OpenStreetMap immer die Frage: Verwende ich eine fertige Lösung (mit/ohne JavaScript mit allen ihren tollen Features und Bugs) oder baue ich selbst eine Infrastruktur, die als Ausgangsbasis die OpenStreetMap-Vektordaten verwendet.
Der erste Weg ist bequem und relativ schnell umsetzbar - der zweite ist wesentlich flexibler, aber auch unvergleichlich aufwendiger.

Ich hoffe, ich habe Dich nicht zu sehr gelangweilt - frei nach dem Motto des Forums: Hier erhalten Sie Antworten auf Fragen, die Sie nie gestellt haben... :-D

Bezüglich Delphi stimme ich Dir zu. :thumb:
Und obwohl die neueren IDE's den einen oder anderen Bug haben - ich kann damit wirklich schön und komfortabel programmieren. So kann ich zum Beispiel wunderbar 64-Bit-ISAPI-DLL's erstellen und den Hauptspeicher des Servers mit 10 GB vollschreiben... :-D
Hast Du schon mal XE3 getestet?

Betreffs Windows: Jaaa... :-D

P.S.: Die Verarbeitung und Nutzung der OpenStreetMap-Vektordaten ist unabhängig vom Framework in Arbeit. Insofern mache ich eigentlich genau das, was Du vorgeschlagen hast - nur eben nicht mit einem vorhandenen JavaScript-Player. :thumb:

(*) P.P.S.:
Ich hatte gerade die Komponente getestet.
Völlig unbrauchbarer Zoom: Man landet an der verkehrten Stelle. Ein gezielter Zoom auf eine bestimmte Stelle ist unmöglich. Der Schieberregler im Zoom-Steuerelement ist ohne Funktion (man verschiebt einfach die darunterliegende Karte).
Die sichtbaren Kartenkacheln werden immer komplett geladen, bevor die Karte verschoben werden kann. Das führt zu erheblichen Rucklern.
Wird die Karte nach Norden oder Süden verschoben, taucht sie oben bzw. unten wieder auf. Bewegt man sich dagegen nach Westen oder Osten, verschwindet die Karte aus dem Sichtbereich. Der Entwickler hat da wohl irgend etwas mißverstanden.
Von den Bugs und der mangelnden Qualität mal abgesehen, begeht der Anbieter auch einen klaren Lizenzverstoß: In der Demo erfolgt keinerlei Hinweis auf OpenStreetMap - dagegen steht an allen möglichen Stellen auf der Karte ein Copyrighthinweis auf Stelife. :evil:
Fazit: Auch hier Finger weg davon!

BBoy 27. Mär 2013 09:37

AW: Google Maps über COM (Component Object Model)
 
Wie kann man mit der Maus auf der Karte ein Rectangle ziehen?
Momentan setze ich mit einem Klick das linke obere Eck und mit dem nächsten das rechte untere Eck. Und zeichne dann das Rechteck mit Script.Google.Maps.Rectangle(RectangleOptions);
Mir wäre aber ein aufziehen mit der Maus lieber...

Und wie kann ich am einfachsten Entfernungen zwischen 2 Punkten messen? (die ich mir der maus setzte).
Oder die Strecke einer Polylinie die ich auf der Karte zeichne.
Also einfach mit Lat und Lng punkten ohne geocoder.

Thom 27. Mär 2013 11:54

AW: Google Maps über COM (Component Object Model)
 
Für das interaktive Zeichnen eignet sich die Drawing-Bibliothek (diese wird ab Version 2.1 des Frameworks unterstützt; dort ist auch eine Demo dazu enthalten) und für Abstands- und Längenberechnungen kann man die Geometry-Bibliothek verwenden (ab Version 2.0).


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:48 Uhr.
Seite 39 von 55   « Erste     29373839 404149     Letzte »    

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