Ich versuche mit einer Delphi Anwendung eine Google Map darzustellen bei der
Karte sollten sich die Marker aus der Anwendung bestimmen lassen.
Auf dem Server habe ich folgende
HTML Seite:
Delphi-Quellcode:
<
html><head>
<script src="http:
//maps.google.com/maps?file=api&v=2.x&key=ABQIAAAALAyPM0cN5H4k4KM-7W6VQBRf0FePgkyxmUXJn9hmf5uqva2aGBQEHbZ_hWLtb_TV7znBj6MvQHpX5w" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
var map;
var marker = new google.maps.Marker(
{
position: new google.maps.LatLng(56.8848, 14.7730),
map: map,
title: 'My workplace',
clickable: false,
icon: 'http://google-maps-icons.googlecode.com/files/factory.png'
});
function addControl(ctrlType)
{
switch(ctrlType)
{
case 1:
map.addControl(new GSmallMapControl())
break
case 2:
map.addControl(new GMapTypeControl());
break
}
}
function createMapMarker(lat, lng,
html)
{
var point = new GLatLng(parseFloat(lat),parseFloat(lng));
var marker = new GMarker(point);
var html_m = html;
GEvent.addListener(marker, "click", function()
{marker.openInfoWindowHtml(html_m)}
);
icon: '
http://google-maps-icons.googlecode.com/files/factory.png'
map.addOverlay(marker);
return marker;
}
function load_map(id, lat, lng, zoom)
{
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById(id));
var point = new GLatLng(parseFloat(lat),parseFloat(lng));
map.setCenter(point, zoom);
}
else {
alert("Sorry, the Google Maps API is not compatible with this browser");
}
}
//]]>
</script>
<base href="http:
//www.stevetrefethen.com/siteblog/"></base>
<style type="text/css">
html, body
{ border: 0px; margin: 0px; padding: 0px; }
</style>
</head>
<body onunload="GUnload()">
<
div id="skypark" class="floatright" style="width: 500px; height: 500px;"></
div>
<script src="http:
//www.stevetrefethen.com/siteblog/googlemap.ashx?id=skypark&lat=46.818188&lon=8.227512&zoom=07" type="text/javascript"></script>
</body>
<!--[
if gte IE 6]>
<script type="text/javascript">
//<![CDATA[
function load_IEmap(id, lat, lng, zoom)
{
load_map(id, lat, lng, zoom);
}
//]]>
</script>
<![endif]-->
</
html>
aus der Anwendung greife ich mit dem Code aus dem ersten Post zu.
Der Fehler der Auftaucht ist ein Scriptfehler.
Zitat:
Das Icon wird über eine
URL festgelegt. Änderst du die
URL zu einem anderen Icon, hast du ein anderes Icon.
Das ist das Problem: Sobald ich versuche ein eigenes Icon darzustellen erhalte ich die Fehlermeldung.
Wenn ich die Karte ohne die Icons Definition aufrufe Funtioniert es:
Delphi-Quellcode:
procedure Tfrm_googlemap.btn_batch_distClick(Sender: TObject);
var
// latitude, longitude: String;
Doc2: IHTMLDocument2;
Win2: IHTMLWindow2;
latlng: String;
i: integer;
begin
if not DM.Camps.Active then DM.Camps.Open;
if not DM.tmp.Active then DM.tmp.Open;
try
DM.tmp.First;
for i := 0 to DM.tmp.RecordCount -1 do begin
with WebBrowser1.HTMLWindow2 do
begin
execScript('createMapMarker( " ' +
DM.tmp.FieldByName('POS_LAT').AsString + '", "'+
DM.tmp.FieldByName('POS_LNG').AsString +'", "'+
DM.tmp.FieldByName('NAME').AsString + '
'+
DM.tmp.FieldByName('STR').AsString + '
'+
DM.tmp.FieldByName('PLZ').AsString + '-'+
DM.tmp.FieldByName('CITY').AsString + '
'+
DM.tmp.FieldByName('TEL').AsString +
'")', 'JavaScript');
log_window.Lines.Add(
DM.tmp.FieldByName('POS_LAT').AsString +
' ' +
DM.tmp.FieldByName('POS_LNG').AsString +
' ' +
DM.tmp.FieldByName('NAME').AsString); // Logeintrag
DM.tmp.Next;
end;
end;
finally
end;
Doc2 := WebBrowser1.Document as IHTMLDocument2;
Win2 := Doc2.parentWindow;
latlng := '46.818188,8.227512';
Win2.execScript('map.panTo(new GLatLng(' + latlng + '));', 'JavaScript');
WebBrowser1.ExecJScript('addControl(1);');
end;
mit freundlichen Grüssen
Manfred