Delphi-PRAXiS
Seite 43 von 55   « Erste     33414243 444553     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)

Thom 15. Sep 2013 15:14

AW: Google Maps über COM (Component Object Model)
 
Hallo DelphiFan, hallo Peter -

bitte entschuldigt die späte Antwort. Ich bin nämlich voll im Vorbereitungsstreß für die Delphi-Tage...

Vielen Dank für das Lob - da macht die Arbeit gleich wieder viel mehr Spaß! :-D
Meinetwegen können die schönen Tage auch noch eine Weile bleiben. Leider sagt der Wetterbericht für kommende Woche nur Regenwetter voraus. Allerdings soll's am Community-Tag in Leipzig wieder etwas freundlicher sein. :thumb:

SSD: Oh ja - das ist bestimmt nicht schlecht. Als ich vor einem halben Jahr die Qual der Wahl hatte, mich beim neuen Laptop zwischen einer (bezahlbaren) 256 GB SSD und einer 1 TB Festplatte entscheiden zu müssen, hatte ich die größere Festplatte gewählt und bisher nicht bereut: Die SSD wäre jetzt schon voll... :lol:

Das Problem mit dem StrToFloat() kommt daher, daß Steinalt-Delphi-Versionen noch kein StrToFloatDef() kannten und deshalb eine Exception generieren, falls der String nicht in eine Gleitkommazahl umgewandelt werden kann. Diese wird aber im Except-Block abgefangen. Deshalb siehst Du die Exception nur, wenn Du das Programm im Debugger laufen läßt. Du kannst aber in den Debuggereinstellungen festlegen, daß dieser Exceptiontyp ignoriert werden soll.

Damit bin ich bei einem generellen Problem: Anstatt moderne Delphi-Features - wie zum Beispiel Generics, anonyme Methoden und die erweiterte RTTI - zu nutzen, muß ich alles x mal neu schreiben, nur weil sich irgendein Typ geändert hat. Auch sind die vielen Kompilerfehler in älteren Versionen einfach nur nervig und ich investiere unzählige Stunden, um Strukturen für diese veralteten Delphiversionen verarbeitbar zu machen. Das ist unterm Strich ein überproportional hoher Aufwand.
Die Version 3.0 wird trotzdem noch (mit einigen Einschränkungen) ab Delphi 5 einsetzbar sein (ich habe diese Entscheidung schon mehr als ein mal bereut :roll:). Aber spätestens dann, wenn ARC auch bei der Entwicklung für Windows Einzug hält, wird es einen Schnitt geben.

Bezüglich der Schatten:
Ich hatte das gerade noch mal mit der Demo InfoWindowSimple probiert: Das Einfügen von ",'','',3.13" bei LoadAPIAsync funktioniert. Probiere das mal bitte mit dieser Demo und lies bei Deinem Programm die Versionsnummer des APIs aus.

Viele Grüße
Thomas

Thom 17. Sep 2013 13:02

AW: Google Maps über COM (Component Object Model)
 
Konfigurationsdatei für Delphi XE5 im ersten Beitrag hinzugefügt. Damit sollte das Framework auch mit der neuen Delphiversion funktionieren. :thumb:

Thom 18. Sep 2013 16:13

AW: Google Maps über COM (Component Object Model)
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ich habe für die diesjährigen Delphi-Tage mal ein kleines Programm (nennt man heutzutage wohl "Äpp" :wink:) mit der Version 3 geschrieben. Enthalten sind die Veranstaltungsorte, ein Routenplaner sowie die Wettervorhersage und Stauinformationen. Alles nichts weltbewegendes - aber die erste "offizielle" Demo unter Verwendung der neuen Version. :lol:

Anhang 39880

Einige der verwendeten Neuerungen:
  • Vollbildmodus (F11)
  • Optischer Zoom (Strg+Mausrad, Strg+0)
  • Kontextmenus für einzelne Objekte (hier Karte und Marker)
  • Aufruf von Delphi-Code beim Klick auf HTML-Links

DelphiFan2008 25. Sep 2013 20:28

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

dein Demo: ein kleiner Schritt für den Ersteller/Author ein großer für die Google-Map-"COM/Delphi"-Community. Ich warte sehnsüchtig auf die V3 :lol:

Gruß DelphiFan2008

pustekuchen 26. Sep 2013 07:07

AW: Google Maps über COM (Component Object Model)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo thom,

wenn man mit STRG(optischer Zoom) zu weit herrauszoomt kommt es zu sehr langen Ladezeiten bzw. teilweilse gefühltem stehenbleiben der App.

hathor 26. Sep 2013 08:26

AW: Google Maps über COM (Component Object Model)
 
Nur mal so kurz "in die Runde geworfen":
Kann es sein, dass irgendwo ein Speicher vollläuft?
Die Programme hängen alle, wenn mehrmals der Inhalt des Fensters wechselt durch zoomen oder verschieben.

Thom 26. Sep 2013 12:10

AW: Google Maps über COM (Component Object Model)
 
Hallo pustekuchen, hallo hathor,

vielen Dank für Euer Interesse und für's Testen!

Eine Karte besteht aus Bildern (PNG, JPG) im Format 256x256 Pixel. Zoomt man heraus (wie in Deinem Screenshot), hat man dann schnell ein Bild aus 75x44 Kacheln. Das wären dann (75x256)x(44x256)=19200x11265=216268800 Pixel - ein 216 Megapixel-Bild. Und das muß dann auch erst einmal durch die Leitung gequält und per JavaScript aufbereitet werden. Ich denke, das erklärt alles... :lol:

Der optische Zoom sollte also mit der entsprechenden Überlegung angewendet werden. Ich finde ihn eher beim Vergrößern sinnvoll, da dann auch die Steuerelemente vergrößert werden und von Menschen mit einer Sehschwäche besser erkannt und bedient werden können. Auch in Leitzentralen oder bei Präsentationen könnte eine vergrößerte Darstellung hilfreich sein.

Anwender des Frameworks können den optischen Zoom komplett deaktivieren oder über das Event OnBeforeOpticalZoom einschränken.


@DelphiFan,

vielen Dank!

DelphiFan2008 5. Okt 2013 11:47

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

ich möchte eine Anwendung mit deinem Framework erstellen, bei der GoogleMaps im Wesentlichen zur Visualisierung verwendet wird. Sprich nicht zwingend wegen notwendiger Internet-Anbindung erforderlich ist. D.h. das Programm soll auch ohne Internet funktionieren.

Die Abfrage nach Internet erfolgt mit folgendem Code.
Delphi-Quellcode:
function IsOnline:Boolean;
const WininetDLL = 'wininet.dll';
var  hWininetDLL: THandle;
      lpdwFlags : DWORD;
      dwReserved: DWORD;
      fn_InternetGetConnectedState: function( lpdwFlags:LPDWORD;dwReserved:DWORD ):BOOL; stdcall;
begin
  lpdwFlags := INTERNET_CONNECTION_MODEM + INTERNET_CONNECTION_LAN + INTERNET_CONNECTION_PROXY;

  Result := False;
  dwReserved := 0;
  hWininetDLL := LoadLibrary( WininetDLL );
  if( hWininetDLL > 0 )then
  begin
    @fn_InternetGetConnectedState := GetProcAddress( hWininetDLL,'InternetGetConnectedState' );
    if Assigned( fn_InternetGetConnectedState )then
    begin
      Result := fn_InternetGetConnectedState( @lpdwFlags,dwReserved );
    end;
    FreeLibrary( hWininetDLL );
  end
  else
    raise Exception.Create('Unable to locate function InternetGetConnectedState in library ' + WininetDLL);
end;
Mit dem Ergebnis kann ich erkennen ob ich Online bin oder nicht. Nun kann ich vor jede GoogleMap Aktivität
Delphi-Quellcode:
IsOnline
bzw. das Ergbnis der einmaligen Abfrage
Delphi-Quellcode:
bOnline := IsOnline
setzten, erscheint jedoch nicht sehr elegant. Gibt es aus deiner Sicht eine einfache Möglichkeit?

Gruß DelphiFan2008

Thom 5. Okt 2013 12:15

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

brobier's mal mit
Delphi-Quellcode:
Script.Navigator.OnLine
.

Viele Grüße
Thomas

pretep 12. Okt 2013 12:38

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

bin absoluter newbie auf diesem Gebiet, habe mich heute erstmals mit dieser Theamtik beschäftigt.
Ich habe versucht, einige Demos zu kompilieren, bekomme aber immer Fehler:
z.B:
Code:
[dcc32 Fehler] gmOverlaysMarker.pas(21): E2003 Undeklarierter Bezeichner: 'TMap'
Benutze XE4 und habe die globalen Biblio/Suchpfade wie beschrieben gesetzt.
Was mache ich grundsätzlich falsch?:pale:

Peter


Ergänzung:

Ah, ok! Mir fehlen die Units im Verzeichnis /Api.
Kann man die eventuell irgendwie (wenigstens erst einmal) testweise erhalten?
PP


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:15 Uhr.
Seite 43 von 55   « Erste     33414243 444553     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz