Thema: Delphi Googlemaps Icons ändern

Einzelnen Beitrag anzeigen

manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#7

Re: Googlemaps Icons ändern

  Alt 7. Jan 2010, 17:24
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&amp;lat=46.818188&amp;lon=8.227512&amp;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
  Mit Zitat antworten Zitat