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
PStadler

Registriert seit: 28. Okt 2006
1 Beiträge
 
#1

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

  Alt 9. Mär 2012, 13:43
Hallo Thom,

Ich benutze Ihre Framework 2.0 und konnte damit schon viel schöne Dinge tun.
Etwas habe ich jedoch nicht gefunden. Wie man einen Marker verschieben kann? Java-Script Beispiele habe ich dazu gefunden. Aber
ich würde es gerne in Delphi machen.

mfg Peter
  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 9. Mär 2012, 19:05
Hallo Peter,

das freut mich!
Hast Du konkrete JavaScript-Beispiele? In der Regel können diese direkt nach Delphi umgesetzt werden. Geht es zum Beispiel einfach darum, den Marker an einer anderen Stellen anzeigen zu lassen, reicht die Übergabe der neuen Koordinaten über ein TLatLng-Objekt:
Delphi-Quellcode:
 with Script do
    Marker.SetPosition(New(Google.Maps.LatLng(LatNew,LngNew)));
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
Peter.Stadler

Registriert seit: 30. Sep 2005
Ort: Mödling
21 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

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

  Alt 9. Mär 2012, 22:07
Hallo Thom,

Hier ist ein Skript, mit dem sich zwei von drei Markern
draggen lassen. So etwas würde ich brauchen!

http://koti.mbnet.fi/ojalesa/exam/draggable.html

mfg Peter
Peter Stadler
  Mit Zitat antworten Zitat
Peter.Stadler

Registriert seit: 30. Sep 2005
Ort: Mödling
21 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

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

  Alt 10. Mär 2012, 09:37
Hallo,

Ich habe die Lösung gefunden:

var
MarkerOptions: TMarkerOptions;

begin
...
MarkerOptions.Draggable := True;
...

mfg Peter
Peter Stadler
  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 10. Mär 2012, 09:51
Hallo Peter,

kein Problem! Marker können über das Options-Objekt verschiebbar gemacht werden
Delphi-Quellcode:
var
  Opts: TMarkerOptions;
begin
  with Script do
  begin
    Opts:=TMarkerOptions.Create;
    Opts.Draggable:=true;
    Opts.Animation:=Google.Maps.Animation.Bounce; //<- Animation am Ende des Drag-Vorganges
    Marker:=New(Google.Maps.Marker(Opts));
    Marker.OnStartDrag:=OnStartDrag; //<- Event-Handler, der den Beginn der Verschiebung meldet
    Marker.OnDrag:=OnDrag; //<- Event-Handler während der Verschiebung
    Marker.OnDragEnd:=OnDragEnd; //<- Event-Handler, der das Ende der Verschiebung signalisiert
    [...]
  end;
end;
oder direkt über das Marker-Objekt:
Delphi-Quellcode:
  Marker.SetDraggable(true)
  [...];
OK - da kam meine Antwort zu spät...
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 10. Mär 2012, 13:58
Hallo Thom,

habe meine "Karte" mit einer Skalierung versehen. Momantan bestimme ich die Entfernung mit einer externen Funktion nach der Methode Orthodrome. GPSGetDistance( ) mit folgendem Quelltext.
Delphi-Quellcode:
procedure TForm1.MapZoomAndSized(Sender: TObject);
var
     t : TLatLngBounds;
     x,y : Integer;
     fLat1,fLng1,
     fLat2,fLng2 : Double;
begin
  t := Map.GetBounds;

  fLat1 := t.GetNorthEast.Lat;
  fLng1 := t.GetNorthEast.Lng;
  fLat2 := t.GetSouthWest.Lat;
  fLng2 := t.GetSouthWest.Lng;

  x := Round( GPSGetDistance( 0.0,0.0,fLng1,fLng2 ) );
  y := Round( GPSGetDistance( fLat1,fLat2,0.0,0.0 ) );

  RUx.RightVal := x; // Steuerelement Ruler/Skala in x-Richtung
  RUy.RightVal := y; // Steuerelement Ruler/Skala in y-Richtung
end;
Verknüpft ist MapZoomAndSized() mit Map.OnZoomChanged und Map.OnBoundsChanged

Kann ich die Entfernung (Kartenausschnitt-Breite/Höhe) auch über GoogleMap direkt bestimmen?

Gruß DelphiFan2008
Miniaturansicht angehängter Grafiken
maprulers.jpg  
  Mit Zitat antworten Zitat
Thom

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

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

  Alt 10. Mär 2012, 21:00
Hallo DelphiFan2008,

die Lineale sehen ja super aus!

Ja, die Breite und Höhe der angezeigten Karte läßt sich auch mit Hilfe des Google Maps API's berechnen. Dazu muß lediglich die Geometrie-Bibliothek eingebunden werden:
Delphi-Quellcode:
  LoadAPI(InitMap,[libGeometry]);
  //oder
  LoadAPIAsync(InitMap,[libGeometry]);
Die Berechnung selbst erfolgt dann über die Funktion ComputeDistanceBetween des Spherical-Objektes:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Width, Height: Double;
  NorthWest: {$IFDEF USE_INTERFACES}ILatLng{$ELSE}TLatLng{$ENDIF};
begin
  with Script do
  begin
    with Maps[0].Bounds do
    begin
      NorthWest:=New(Google.Maps.LatLng(NorthEast.Lat,SouthWest.Lng));
      Width:=Google.Maps.Geometry.Spherical.ComputeDistanceBetween(NorthWest,NorthEast);
      Height:=Google.Maps.Geometry.Spherical.ComputeDistanceBetween(NorthWest,SouthWest);
    end;
  end;
  ShowMessage(Format('Width: %f km, Height: %f km',[Width/1000,Height/1000]));
end;
Code:
NW---------NE
|          |
|          |
|          |
|          |
|          |
SW---------*

NW - NorthWest
NE - NorthEast
SW - SouthWest
Bei dieser Gelegenheit möchte ich einmal einen kleinen Ausblick auf die kommende Version des Frameworks geben:
Eine wichtige Erweiterung - neben vielen anderen Neuerungen - wird die Verwendung von Interfaces sein (siehe obiges Beispiel), so daß eine compilerunterstützte, automatische Freigabe nicht mehr benötigter Objekte zur Verfügung stehen wird. Bisher sollte (mußte aber nicht) das Objekt NorthWest im eigenen Quelltext freigegeben werden. Das wird nach der Umstellung auf Interfaces nicht mehr notwendig sein.
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
ReM

Registriert seit: 19. Mär 2012
3 Beiträge
 
#8

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

  Alt 27. Mär 2012, 20:50
I hope you understand english...
I have two groups of markers (red and blue). First group visible permanent. How can I change markers in second group? Remove all, change chosen, change all.
Miniaturansicht angehängter Grafiken
map.png  
  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 16:32 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