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