Tilecache en Mapnik-probleem

My configs:

# Rendering OpenStreetMap data with Mapnik; should use metaTiling to
# avoid labels across tile boundaries
[osm-map]
type=MapnikLayer
mapfile=/usr/home/sergeev/osm_mapnik/osm.xml
spherical_mercator=true
tms_type=google
metatile=yes
extent_type=loose

en

var map, layer;

        function init(){
            var options = {
                    resolutions: [156543.0339, 78271.51695, 39135.758475, 19567.8792375, 9783.93961875, 4891.969809375, 2445.9849046875, 1222.99245234375, 611.496226171875, 305.7481130859375, 152.87405654296876, 76.43702827148438, 38.21851413574219, 19.109257067871095, 9.554628533935547, 4.777314266967774, 2.388657133483887, 1.1943285667419434, 0.5971642833709717, 0.29858214168548586],
                        numZoomLevels: 20,
                        maxExtent: new OpenLayers.Bounds(0.05917265625,0.1171263671875,0.0593009765625,0.11720234375),
                        projection: 'EPSG:900913'
            };

            map = new OpenLayers.Map( $('map'), options);
            layer = new OpenLayers.Layer.WMS( "VMap0", 
                    "tilecache.cgi?", {layers: 'osm-map', format: 'image/png' } );
            map.addLayer(layer);
            map.addControl(new OpenLayers.Control.Permalink());
            if (!map.getCenter()) map.zoomToMaxExtent();
        }

my osm.xml is here: http://pastebin.com/f5EWUsTy

My problem:

I see the map, but i cant't move it: each zoom level is fixed. en the center of the map is somewhere in Africa, but i thought my xml is describing north of Russia. The image below is what i see: enter image description here

Dus wat moet ik doen? (Ik ben helemaal nieuw voor GIS, dus wees alsjeblieft geduldig :)

1

2 antwoord

Je grenzen zijn verkeerd (in feite zijn ze zo verkeerd dat ik verbaasd ben dat je zoveel kaart ziet).

Verandering

  maxExtent: new OpenLayers.Bounds(0.05917265625,0.1171263671875,0.0593009765625,0.11720234375),

naar zoiets als:

'maxExtent': new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34)

Je kunt ook deze tutorial lezen die projecties bespreekt en lat/lon converteert naar bolvormige mercator. coördineert.

2
toegevoegd

Ik had er veel problemen mee en ik vond een manier om het werkbaar in te stellen:

pagina.html

function init(){
   map = new OpenLayers.Map('map',
      {// maxResolution: 156543/4,
       maxResolution: 2445.984375/4,
       maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
       numZoomLevels: 12,
       units: 'm',
       projection: new OpenLayers.Projection("EPSG:900913"),
       displayProjection: new OpenLayers.Projection("EPSG:4326")
      });

   layer = new OpenLayers.Layer.WMS( "osm","tilecache/tilecache.cgi?",
      { layers:'osm',
        format: 'image/png',
        srs: 'EPSG:4326'
      } );  
   map.addLayer(layer);
}

tilecache.cfg

[cache]
type=Disk
base=/tmp/tilecache

[osm]
type=Mapnik
mapfile=/home/dmiadmin/bin/mapnik/osm.xml
spherical_mercator=true
bbox=-20037508.34,-20037508.34,20037508.34,20037508.34
resolutions=2445.984375,1222.9921875,611.49609375,305.748046875,152.874023438,76.4370117188,38.2185058594,19.1092529297,9.55462646484,4.77731323242,2.38865661621,1.19432830811,0.597164154053,0.298582077026,0149291039
metaTile=true
metaSize=8,8
metaBuffer=40
levels=20

Het belangrijkste is om de maxResolution-rechten in te stellen en vervolgens aan de grenzen te werken. De grenzen ymin-ymax en xmin-xmax zijn reële getallen en moeten kunnen worden gediscrimineerd door de maxResolution-waarde die een real-non-float-getal oplevert. Dit aantal is trouwens. het aantal tegels gegenereerd per as (x/y) de resoluties moeten worden gedeeld door 2, 4 of 8 van het initiële nummer (156543 bv.)

Ik weet dat dit allemaal erg verwarrend is. Ik werkte 3 dagen aan dat probleem, totdat ik volledig begreep hoe de dingen met elkaar verbonden zijn!

1
toegevoegd
+1, ik kom dichterbij het begrijpen, bedankt! (nooit gedacht dat er tegen mij gezegd zal worden dat de aarde een bol is ...)
toegevoegd de auteur user5974, de bron