Hello,

I'm trying to set up my own map app using OSM data, mapnik + PostGIS to render 
map, mod_tile to serve tiles and OpenLayers for map display. Everything works 
fine, except I cannot restrict viewable map area in OpenLayers. I want user to 
see only area of one city, and not to zoom out outside it.

So I have downloaded OSM XML file with map of requested area, loaded it to 
PostGIS with command like this:
osm2pgsql -d some-db -p some-prefix -U some-user -H localhost 
/neuromap/trunk/data/wroclaw-map.osm -c -E 900913 -b 
16.8188,50.9974,17.2235,51.2065

(BTW: data is loaded to PostGIS but osm2pgsql says: 
StartElement: Unknown element name: bounds
EndElement: Unknown element name: bounds - maybe this is a problem?)

I create OpenLayers map as follows:

var mapnikLayer = new OpenLayers.Layer.OSM("world", "http://some-url...";);
var mapOptions = {
    controls:[
        new OpenLayers.Control.PanZoomBar(),
        new OpenLayers.Control.Permalink(),
        new OpenLayers.Control.ScaleLine(),
        new OpenLayers.Control.OverviewMap(),
        new OpenLayers.Control.Permalink('permalink'),
        new OpenLayers.Control.MousePosition(),
        new OpenLayers.Control.KeyboardDefaults(),
        new OpenLayers.Control.MouseDefaults()
    ],
    maxExtent: new OpenLayers.Bounds(1863611,6614478,1924760,6660340),
    maxResolution: 0.6,
    units: 'm',
    //numZoomLevels: 19,
    projection: new OpenLayers.Projection("EPSG:900913")
  }  
  
  var map = new OpenLayers.Map ("wroc-map", mapOptions);
  map.addLayer(mapnikLayer);
  ...

When I call map.zoomToMaxExtent(), OpenLayers shows what I expect to be whole 
world area - not my city. When I display map.getMaxExtent() i get:

max extent: left-bottom=(-20037508.34,-20037508.34) 
right-top=(20037508.34,20037508.34)

so maxExtent is evidently not set.


I can do of course:
map.zoomToExtent(new OpenLayers.Bounds(1863611,6614478,1924760,6660340))
but that's not what I want because zoom level is set to 11. I would prefer to 
have zl=0 with the view of whole city.


I also tried to use 
scales:[220000,150000,100000,50000,20000,10000,5000,2000,1000] instead of 
maxExtent and maxResolution, but though I call zoomToExtent... and viewport has 
this extent I can see only placeholder tile images with message "...more OSM 
data soon". 


Is restricting of viewable map area possible?
What am I doing wrong?
Please help.

Shymon


-- 
View this message in context: 
http://n2.nabble.com/How-to-restrict-map-extent--tp2568378p2568378.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.

_______________________________________________
Users mailing list
[email protected]
http://openlayers.org/mailman/listinfo/users

Reply via email to