AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Googlemaps: Parameterübergabe bei Javascript
Thema durchsuchen
Ansicht
Themen-Optionen

Googlemaps: Parameterübergabe bei Javascript

Ein Thema von mcinternet · begonnen am 21. Nov 2012 · letzter Beitrag vom 21. Nov 2012
Antwort Antwort
mcinternet

Registriert seit: 22. Apr 2010
Ort: Odenwald
193 Beiträge
 
Delphi 10.3 Rio
 
#1

Googlemaps: Parameterübergabe bei Javascript

  Alt 21. Nov 2012, 10:01
Hallo,

stehe hier vor einem kleinen Problem. Bei der Initialisierung wird eine fest vorgegebene Koordinate angegeben und danach wird mittels goto... die richtige übertragen und auch die entsprechende Karte gezeigt.
Mein Wunsch: Gleich die richtige Karte anzeigen.
Delphi-Quellcode:
const

HTMLStr: AnsiString =
'<html> '+
'<head> '+
'<meta name="viewport" content="initial-scale=1.0, user-scalable=yes" /> '+
'<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script> '+
'<script type="text/javascript"> '+
''+
''+
' var geocoder; '+
' var map; '+
' var trafficLayer;'+
' var bikeLayer;'+
' var markersArray = [];'+
''+
''+
' function initialize() { '+
' geocoder = new google.maps.Geocoder();'+
' var latlng = new google.maps.LatLng(50.736455,10.173340); '+ // hier möchte ich die Variablen Lng und Lang einsetzen können
' var myOptions = { '+
' zoom: 5, '+
' center: latlng, '+
' mapTypeId: google.maps.MapTypeId.ROADMAP '+
' }; '+
' map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); '+
' trafficLayer = new google.maps.TrafficLayer();'+
' bikeLayer = new google.maps.BicyclingLayer();'+
' map.set("streetViewControl", false);'+
' } '+
''+
''+
' function codeAddress(address) { '+
' if (geocoder) {'+
' geocoder.geocode( { address: address}, function(results, status) { '+
' if (status == google.maps.GeocoderStatus.OK) {'+
' map.setCenter(results[0].geometry.location);'+
' PutMarker(results[0].geometry.location.lat(), results[0].geometry.location.lng(), results[0].geometry.location.lat()+","+results[0].geometry.location.lng());'+
' } else {'+
' alert("Geocode was not successful for the following reason: " + status);'+
' }'+
' });'+
' }'+
' }'+
''+
''+
' function GotoLatLng(Lat, Lang) { '+
' var latlng = new google.maps.LatLng(Lat,Lang);'+
' map.setCenter(latlng);'+
' PutMarker(Lat, Lang, Lat+","+Lang);'+
' }'+
''+
''+
'function ClearMarkers() { '+
' if (markersArray) { '+
' for (i in markersArray) { '+
' markersArray[i].setMap(null); '+
' } '+
' } '+
'} '+
''+
' function PutMarker(Lat, Lang, Msg) { '+
' var latlng = new google.maps.LatLng(Lat,Lang);'+
' var marker = new google.maps.Marker({'+
' position: latlng, '+
' map: map,'+
' title: Msg+" ("+Lat+","+Lang+")"'+
' });'+
' markersArray.push(marker); '+
' }'+
''+
''+
' function TrafficOn() { trafficLayer.setMap(map); }'+
''+
' function TrafficOff() { trafficLayer.setMap(null); }'+
''+''+
' function BicyclingOn() { bikeLayer.setMap(map); }'+
''+
' function BicyclingOff(){ bikeLayer.setMap(null);}'+
''+
' function StreetViewOn() { map.set("streetViewControl", true); }'+
''+
' function StreetViewOff() { map.set("streetViewControl", false); }'+
''+
''+'</script> '+
'</head> '+
'<body onload="initialize()"> '+
' <div id="map_canvas" style="width:100%; height:100%"></div> '+
'</body> '+
'</html> ';



implementation

{$R *.dfm}
  uses Main, Winapi.ActiveX, System.StrUtils;



procedure TFrmGMapsAPI.apistart;
  var apilat : string;
       apilng : string;
begin
  apilat := StringReplace(frmMain.gmaps_lat,',','.',[rfReplaceAll]);
  apilng := StringReplace(frmMain.gmaps_lng,',','.',[rfReplaceAll]);
  HTMLWindow2.execScript(Format('GotoLatLng(%s,%s)',[apilat,apilng]), 'JavaScript'); // Hier werden die finalen Koordinaten übergeben und die gewünschte Karte angezeigt.
end;


// Wünschenswert wäre es, wenn bereits hier die finalen Koords übergeben würden ..

procedure TFrmGMapsAPI.FormCreate(Sender: TObject);
var
  aStream : TMemoryStream;
begin

   WebBrowser1.Navigate('about:blank');
    if Assigned(WebBrowser1.Document) then
    begin
      aStream := TMemoryStream.Create;
      try
         aStream.WriteBuffer(Pointer(HTMLStr)^, Length(HTMLStr));
         //aStream.Write(HTMLStr[1], Length(HTMLStr));
         aStream.Seek(0, soFromBeginning);
         (WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(aStream));
      finally
         aStream.Free;
      end;
      HTMLWindow2 := (WebBrowser1.Document as IHTMLDocument2).parentWindow;

    end;

end;
Gruß
Mc
Jörg

Geändert von mcinternet (21. Nov 2012 um 10:07 Uhr)
  Mit Zitat antworten Zitat
mcinternet

Registriert seit: 22. Apr 2010
Ort: Odenwald
193 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Googlemaps: Parameterübergabe bei Javascript

  Alt 21. Nov 2012, 10:36
Machmal sieht man den Wald vor lauter Bäumen nicht.

Problem gelöst: Die Koords gleich in den HTMLSTRING mit eingebaut. HTMLSTRING als var, nicht als const und dann über eine Funktion zusammengeflickt


Gruß

Mc
Jörg
  Mit Zitat antworten Zitat
Thom

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

AW: Googlemaps: Parameterübergabe bei Javascript

  Alt 21. Nov 2012, 12:58
Hast Du Dir schon mal das Framework für Google Maps angeschaut? Damit kannst Du ohne JavaScript und HTML das Selbe mit wenigen Zeilen Delphi erreichen.
Thomas Nitzschke
Google Maps mit Delphi
  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:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:42 Uhr.
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