Registriert seit: 22. Apr 2010
Ort: Odenwald
193 Beiträge
Delphi 10.3 Rio
|
Googlemaps: Parameterübergabe bei Javascript
21. Nov 2012, 11: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 11:07 Uhr)
|