ThomasM: OpenStreetMap mit Marker als URL-Parameter

Beitrag lesen

problematische Seite

Hallo Linuchs,

ich möchte zu einer OSM-Karte verlinken und den verlinkten Ort per Marker zeigen. Den Link habe ich herausgefunden:

https://www.openstreetmap.org/#map=16/53.1691/8.6293

aber es wird kein Marker gesetzt beim Kulturbahnhof HB-Vegesack.

Wie geht das?

Habe damit für ein in Kürze im Rahmen eines Vortrages verwendetes Projekt experimentiert. Man benötigt die so genannte Bounding-Box und den marker-Parameter, zumindest für IFrame-Einbindung mit Vorgabe von Breite, Höhe und Zoomfaktor.

Für die Berechnung gibt es Code in diversen Sprachen.

Habe das zum Einbinden als IFrame mit JavaScript so lösen können:

function getBBox(lat, lon, zoom, width, height)
{
  var tile_size = 256;
  var xtile, ytile, xtile_s, ytile_s, xtile_e, ytile_e, lon_s, lat_s, lon_e, lat_e, bbox;

  xtile = Math.floor((lon + 180) / 360 * Math.pow(2, zoom));
  ytile = Math.floor((1 - Math.log(Math.tan(lat * Math.PI / 180) + 1 / Math.cos(lat * Math.PI / 180)) / Math.PI) / 2 * Math.pow(2, zoom));

  xtile_s = (xtile * tile_size - width / 2) / tile_size;
  ytile_s = (ytile * tile_size - height / 2) / tile_size;
  xtile_e = (xtile * tile_size + width / 2) / tile_size;
  ytile_e = (ytile * tile_size + height / 2) / tile_size;

  lon_s = xtile_s / Math.pow(2, zoom) * 360 - 180;
  lat_s = (Math.atan(Math.sinh(Math.PI * (1 - 2 * ytile_s / Math.pow(2, zoom))))) * 180 / Math.PI;

  lon_e = xtile_e / Math.pow(2, zoom) * 360 - 180;
  lat_e = (Math.atan(Math.sinh(Math.PI * (1 - 2 * ytile_e / Math.pow(2, zoom))))) * 180 / Math.PI;

  bbox = "" + lon_s + "," + lat_s + "," + lon_e + "," + lat_e;
  return bbox;
}

Deine Koordinaten liefern mit document.write(getBBox(53.1691, 8.6293, 16, 1024, 768));

8.61328125,53.174765470134616,8.63525390625,53.16488691759471

und dem marker am Ziel:

https://www.openstreetmap.org/export/embed.html?bbox=8.61328125,53.174765470134616,8.63525390625,53.16488691759471&marker=53.1691,8.6293&layer=mapnik

Grüße, Thomas