x

Unterschied zwischen OpenLayers.Layer.OSM und OpenLayers.Layer.XYZ


Geschrieben von aquacoach (Gast) am 27. Oktober 2010 21:12:31: [flux]

Hi,

ich habe hier ein Problem mit dem Positionieren von Markern (POIs) in einem XYZ-Layer, die im OSM-Layer an der richtigen Stelle angezeigt werden.

Ich habe hier beide Varianten:

<html␣xmlns="http://www.w3.org/1999/xhtml">
<head>
<link␣rel="stylesheet"␣href="../theme/default/style.css"␣type="text/css"␣/>
<link␣rel="stylesheet"␣href="style.css"␣type="text/css"␣/>
<script␣src="../lib/OpenLayers.js"></script>
<script␣type="text/javascript">
var␣map␣=␣null;
function␣init()␣{
var␣geographic␣=␣new␣OpenLayers.Projection("EPSG:4326");
map␣=␣new␣OpenLayers.Map('map',␣{
projection:␣geographic,
displayProjection:␣geographic,
});
var␣layer_tiles␣=␣new␣OpenLayers.Layer.OSM("XYZ-Layer",␣"http://tile.openstreetmap.org/${z}/${x}/${y}.png");
map.addLayer(layer_tiles);
var␣layer_markers␣=␣new␣OpenLayers.Layer.Markers(␣"Markers"␣);
map.addLayer(layer_markers);
//␣http://maps.google.com/maps?f=q&source=s_q&hl=de&geocode=&q=+-5.615055%C2%B0,+120.457567%C2%B0&sll=37.0625,-95.677068&sspn=34.259599,79.013672&ie=UTF8&ll=-5.614966,120.457417&spn=0.002627,0.004823&t=h&z=18
var␣lonlat_center␣=␣new␣OpenLayers.LonLat(120.457567,␣-5.615055).transform(geographic,␣map.getProjectionObject());
var␣icon␣=␣new␣OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png');
layer_markers.addMarker(new␣OpenLayers.Marker(lonlat_center,␣icon));
map.setCenter(lonlat_center,␣15);
}
</script>
</head>
<body␣onload="init()">
<div␣id="map"␣class="smallmap"></div>
</body>
</html>

bzw.

<html␣xmlns="http://www.w3.org/1999/xhtml">
<head>
<link␣rel="stylesheet"␣href="../theme/default/style.css"␣type="text/css"␣/>
<link␣rel="stylesheet"␣href="style.css"␣type="text/css"␣/>
<script␣src="../lib/OpenLayers.js"></script>
<script␣type="text/javascript">
var␣map␣=␣null;
function␣init()␣{
var␣geographic␣=␣new␣OpenLayers.Projection("EPSG:4326");
map␣=␣new␣OpenLayers.Map('map',␣{
projection:␣geographic,
displayProjection:␣geographic,
maxExtent:␣new␣OpenLayers.Bounds(-180,␣-180,␣180,␣180),␣//␣!!!␣Warum?
});
var␣layer_tiles␣=␣new␣OpenLayers.Layer.XYZ("XYZ-Layer",␣"http://tile.openstreetmap.org/${z}/${x}/${y}.png");
map.addLayer(layer_tiles);
var␣layer_markers␣=␣new␣OpenLayers.Layer.Markers(␣"Markers"␣);
map.addLayer(layer_markers);
//␣http://maps.google.com/maps?f=q&source=s_q&hl=de&geocode=&q=+-5.615055%C2%B0,+120.457567%C2%B0&sll=37.0625,-95.677068&sspn=34.259599,79.013672&ie=UTF8&ll=-5.614966,120.457417&spn=0.002627,0.004823&t=h&z=18
var␣lonlat_center␣=␣new␣OpenLayers.LonLat(120.457567,␣-5.615055).transform(geographic,␣map.getProjectionObject());
var␣icon␣=␣new␣OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png');
layer_markers.addMarker(new␣OpenLayers.Marker(lonlat_center,␣icon));
map.setCenter(lonlat_center,␣15);
}
</script>
</head>
<body␣onload="init()">
<div␣id="map"␣class="smallmap"></div>
</body>
</html>

Damit die Tiles im XYZ-Layer richtig angezeigt werden, musste ich maxExtent: new OpenLayers.Bounds(-180, -180, 180, 180) als Parameter angeben. Das ist der einzige Unterschied der 2 Dateien neben OSM bzw. XYZ.

Ich habe mir lib\OpenLayers\Layer\XYZ.js angeschaut, kann aber nichts verdächtiges finden.

Hat jemand eine Idee?

Coach


Antworten: