AGB  ·  Datenschutz  ·  Impressum  







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

Google Maps über COM (Component Object Model)

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

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#1

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

  Alt 29. Aug 2012, 12:06
Hi

Wollte es auch gerade ausprobieren, alles runtergeladen, suchpfade und co
aber beim compilieren bringt er mir einen fehler

Code:
DCC Fehler BrowserTools.pas(266): E2250 Es gibt keine überladene Version von 'Encode64', die man mit diesen Argumenten aufrufen kann

Delphi-Quellcode:
function Encode64(Data: TStream; MediaType: String): String;
var
  Stream: TStringStream;
begin
  Result:='';
  if not assigned(Data)
    then Exit;
  Stream:=TStringStream.Create('data:'+MediaType+';base64,');
  try
    Stream.Seek(0,soFromEnd);
    Encode64(Data,Stream); <<< Hier
    Stream.Seek(0,soFromBeginning);
    Result:=Stream.DataString;
  finally
    Stream.Free;
  end;
end;
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Thom

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

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

  Alt 29. Aug 2012, 12:35
Doch:
Diese Funktion mit zwei Streams als Parameter gibt es. Sie befindet sich in der Unit Base64 (function Encode64(Src, Dest: TStream): Boolean; overload; ). Diese Unit wird auch von der Unit BrowserTools, aus der die von Dir zitierte Funktion function Encode64(Data: TStream; MediaType: String): String; stammt, über die uses-Anweisung eingebunden.

Du könntest testhalber einmal versuchen, den Aufruf explizit zu formulieren: Base64.Encode64(Data,Stream);
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#3

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

  Alt 29. Aug 2012, 12:52
ah, habe es gefunden, ich habe ein anderes Base64 das auch im suchpfad ist, und das nimmt er als erstes her ...

eine andere Frage
was bedeuten all diese New `?

New(Google.Maps.Marker(MarkerOptions)); Die tuen gar nichts eigetnlich, sind die für zukünftige Sachen da, oder braucht es die für etwas?
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Thom

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

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

  Alt 29. Aug 2012, 13:35
Ja, Du hast vollkommen Recht:
Momentan hat die New-Funktion keinerlei Bedeutung - sie gibt lediglich den Eingangsparameter als Resultat zurück. Sie dient hier nur dazu, den Quelltext etwas leserlicher zu gestalten, indem darauf hingewiesen wird, daß ein neues Objekt angelegt wird/wurde. So erstellt die Funktion Google.Maps.LatLng(...) ein neues TLatLng-Objekt, was aber nicht sofort offensichtlich ist.
Insofern kann die New-Funktion momentan auch ohne Bedenken weggelassen werden.

Das wird sich aber in der kommenden Version grundlegend ändern: Dann wird das Objekt wirklich erst von der New-Funktion erstellt, die dann etwa wie der New-Operator in JavaScript arbeitet.
So liefert - um bei dem Beispiel zu bleiben - Google.Maps.LatLng nur die Klasse und New() erstellt eine Instanz. Das Ganze dient - wie schon erwähnt - der Lesbarkeit des Quelltextes.
Auch Hilfsobjekte werden dann über die New-Funktion erstellt, so daß der Delphi-typische Syntax TObject.Create bei der Verwendung des Frameworks überflüssig wird:
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
  with Script(WebBrowser1) do
    if not APILoaded
      then LoadAPIAsync(InitMap);
end;

procedure TForm1.InitMap(Sender: IObject);
var
  MapOptions: IMapOptions;
begin
  with Sender as IScript do
  begin
    MapOptions:=New(Google.Maps.MapOptions);
    with MapOptions do
    begin
      Zoom:=8;
      Center:=New(Google.Maps.LatLng(-34.397,150.644));
      MapTypeID:=Google.Maps.MapTypeID.Roadmap;
    end;
    New(Google.Maps.Map(MapOptions));
  end;
end;
Zu beachten ist hier, daß die Objekte nur noch über Interfaces angesprochen werden, was der besseren Speicherverwaltung dient.
Thomas Nitzschke
Google Maps mit Delphi

Geändert von Thom (29. Aug 2012 um 13:44 Uhr)
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#5

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

  Alt 30. Aug 2012, 09:47
Hallo

Gibt es eine möglichkeit alle Marker zu lsöchen
und / oder einen spezifischen

Ich finde irgendwie noch nicht das richtige
Gruss Hans

2B or not 2B, that is FF
  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 30. Aug 2012, 10:56
Jedes Objekt auf der Karte wird in einer entsprechenden Liste des Script-Objektes gespeichert und verwaltet.
Delphi-Quellcode:
with Script do
  while Markers.Count>0 do
  begin
    Markers[0].SetMap(TMap(nil));
    Markers.Delete(0);
  end;
Für neuere Delphi-Versionen wird auch der for-in-Syntax unterstützt:
Delphi-Quellcode:
with Script do
begin
  for Marker in Markers do
    Marker.SetMap(TMap(nil));
  Markers.Clear;
end;
In Zukunft wird der Aufruf von Script.Markers.Clear; ausreichen. Momentan werden dabei die Marker aber nicht von der Karte entfernt. Deshalb der explizite Aufruf von SetMap(...) ;
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#7

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

  Alt 30. Aug 2012, 12:33
Danke hat funktioniert
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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: ?&#3636;????? 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:37 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