У меня есть задача нужно увязать карту openstreetmap.org и сервис по земельным участкам(это не самое сложное,в принципе тут помощь особо не нужна) , т.е запросить сервер, получить картинку земельного участка и слоем отобразить на карте опенстрит.
по сути получается такая цепочка
Страница html( с картой) - java servlet - сервер с земельными участками.
при реализации этой задачи столкнулся с следующими проблемами
1) как перевести координаты xyz в Web Mercator Auxiliary Sphere(WMAS), дело в том как я понимаю xyz возвращает две координаты, а WMAS их 4.
2) как получить эти пресловутые координаты xyz и передать их в сервлет( сейчас делаю так, полный код выложу в самом конце поста).
Код: Выделить всё
servletLayer = new OpenLayers.Layer.XYZ('osm', 'servlet_path?z=${z}&x=${x}&y=${y}');
servletLayer.getXYZ();
Код: Выделить всё
function test(){
window.location = "servlet_path?z=${z}&x=${x}&y=${y}" }
Полный код странницы
Код: Выделить всё
<html>
<head>
<title>Simple OSM GPX Track</title>
<script src="http://www.openlayers.org/api/OpenLayers.js"></script>
<script src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script>
<script type="text/javascript">
var lat=47.496792
var lon=7.571726
var zoom=13
var map; //complex object of type OpenLayers.Map
function init() {
map = new OpenLayers.Map ("map", {
controls:[
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.LayerSwitcher(),
new OpenLayers.Control.Attribution()],
maxExtent: new OpenLayers.Bounds(OpenLayers.Bounds.left,6648435.0478947,15823659.4554552,20037508.34),
maxResolution: 156543.0399,
numZoomLevels: 19,
units: 'm',
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326")
} );
layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
map.addLayer(layerMapnik);
layerCycleMap = new OpenLayers.Layer.OSM.CycleMap("CycleMap");
map.addLayer(layerCycleMap);
layerMarkers = new OpenLayers.Layer.Markers("Markers");
servletLayer = new OpenLayers.Layer.XYZ('osm', 'servlet_path?z=${z}&x=${x}&y=${y}');
servletLayer.getXYZ();
map.addLayer(servletLayer);
map.addLayer(layerMarkers);
}
</script>
</head>
<body onload="init();">
<div style="width:90%; height:90%" id="map"></div>
</body>
</html>
Сильно не пинайте, если написал не в тот раздел.