OpenLayer
Добавлено: 09 июн 2010, 21:31
День добрый.
Сижу разбираюсь по немногу со всем этим. Есть сгенеренные tiles mapnik'ом, с 1 масштаба по 17, карта из postgres, ставил postgis. Решил для начала изучения понемногу пробовать разное, сейчас застрял на таком, решил сделать максимальный и минимальный возможный масштаб увеличения карты, пробовал играться с параметрами numZoomLevels, minZoomLevel, maxZoomLevel, но не смог установить минимальный размер, в мапе и указывал numZoomLevels: null, и потом максимальный и минимальный задавал, но ни чего не получалось, если на максимальный реагировал ползунок и возможность увеличения, то минимум ни как не цеплялся, и задавать все три параметра не помогало, потом прочитал, что для OSM не будет действовать minZoomLevel, для другого типа слоёв.
Начал дальше пытаться понять и тут встал тупик, ни как не могу понять, что это maxExtent, я подумал, это будут координаты которые указывают, что именно что показывать на экране, так сказать видимый участок карты. Причём много примеров, где числа порядка -20000, а где -180, -90, 180, 90, ещё кажись и обычны координаты 40.23 имеются. Я у себя задал координатами и использовал транспарент, думаю так надо, видать к чему нужно преобразует.
Опять же не понял как считаются числа для minResolution, maxResolution, Resolutionи что это значит, я так думал, это и есть масштабы максимальный и минимальный. В общем преследую цель. установить макс и мин увеличения карты. А так же не пытаться подгружать не существующих тайлов, т.е. жёстко указать квадрат карты.
ebanix.isa-geek.com/map2.html
Сижу разбираюсь по немногу со всем этим. Есть сгенеренные tiles mapnik'ом, с 1 масштаба по 17, карта из postgres, ставил postgis. Решил для начала изучения понемногу пробовать разное, сейчас застрял на таком, решил сделать максимальный и минимальный возможный масштаб увеличения карты, пробовал играться с параметрами numZoomLevels, minZoomLevel, maxZoomLevel, но не смог установить минимальный размер, в мапе и указывал numZoomLevels: null, и потом максимальный и минимальный задавал, но ни чего не получалось, если на максимальный реагировал ползунок и возможность увеличения, то минимум ни как не цеплялся, и задавать все три параметра не помогало, потом прочитал, что для OSM не будет действовать minZoomLevel, для другого типа слоёв.
Начал дальше пытаться понять и тут встал тупик, ни как не могу понять, что это maxExtent, я подумал, это будут координаты которые указывают, что именно что показывать на экране, так сказать видимый участок карты. Причём много примеров, где числа порядка -20000, а где -180, -90, 180, 90, ещё кажись и обычны координаты 40.23 имеются. Я у себя задал координатами и использовал транспарент, думаю так надо, видать к чему нужно преобразует.
Опять же не понял как считаются числа для minResolution, maxResolution, Resolutionи что это значит, я так думал, это и есть масштабы максимальный и минимальный. В общем преследую цель. установить макс и мин увеличения карты. А так же не пытаться подгружать не существующих тайлов, т.е. жёстко указать квадрат карты.
ebanix.isa-geek.com/map2.html
Код: Выделить всё
<html>
<head>
<title>OpenLayers Demo</title>
<style type="text/css">
html, body, #basicMap {
width: 100%;
height: 100%;
margin: 0;
}
</style>
<script src="OpenLayers.js"></script>
<script>
function init() {
var controls = [new OpenLayers.Control.ArgParser(),
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.MouseDefaults(),
new OpenLayers.Control.LayerSwitcher(),
new OpenLayers.Control.Permalink(),
new OpenLayers.Control.Permalink('permalink'),
new OpenLayers.Control.MousePosition(),
new OpenLayers.Control.OverviewMap(),
new OpenLayers.Control.KeyboardDefaults()];
var bounds = new OpenLayers.Bounds(73, 49, 73.9, 50.8).transform(
new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
new OpenLayers.Projection("EPSG:900913") // to Spherical Mercator Projection
);
var mapArgs = {
maxExtent: bounds,
// maxResolution: 156542.0339,
// numZoomLevels: null,
numZoomLevels: 17,
// minResolution: 13,
units: 'm',
displayProjection: new OpenLayers.Projection('EPSG:4326'),
controls: controls,
projection: 'EPSG:900913',
};
map = new OpenLayers.Map("basicMap", mapArgs);
var mapnik = new OpenLayers.Layer.OSM("New Layer", "http://ebanix.isa-geek.com/tiles/${z}/${x}/${y}.png" );
map.addLayer(mapnik);
var arg_pairs = new OpenLayers.Util.getParameters();
if (!arg_pairs.lat) {
map.setCenter(new OpenLayers.LonLat(73.2,49.9) // Center of the map 13.41,52.52
.transform(
new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
new OpenLayers.Projection("EPSG:900913") // to Spherical Mercator Projection
), 10// Zoom level
);
};
}
</script>
</head>
<body onload="init();">
<div id="basicMap"></div>
</body>
</html>