OpenLayers Как мне перейти с OSM на TMS? - PullRequest
0 голосов
/ 04 марта 2012

Я создал простой html для проверки некоторых листов карты, которые я сделал. Проблема в том, что я сделал так, чтобы они использовали проекцию TMS, но я использовал пример OSM, поэтому все мои плитки отображаются вверх ногами по вертикали. Я попытался перейти на TMS, но после нескольких десятков неудачных попыток кажется, что я что-то упустил, кто-нибудь может помочь исправить код?

<html>
<head>
    <link rel="stylesheet" href="style.css" type="text/css" />
    <script src="OpenLayers.js"></script>
    <script src="OpenStreetMap.js"></script>
    <script type="text/javascript"> 
        var map, layer;

        //Initialise the 'map' object
        function init() {

            map = new OpenLayers.Map ("map", {
                controls:[
                    new OpenLayers.Control.Navigation(),
                    new OpenLayers.Control.PanZoomBar(),
                    new OpenLayers.Control.Permalink(),
                    new OpenLayers.Control.ScaleLine({geodesic: true}),
                    new OpenLayers.Control.Permalink('permalink'),
                    new OpenLayers.Control.MousePosition(),                    
                    new OpenLayers.Control.Attribution()],
                maxExtent: new OpenLayers.Bounds( 0.0, -10000.0, 10000.0, 0.0),
                maxResolution: 64.000000,
                numZoomLevels: 7,
                units: 'm',
                projection: new OpenLayers.Projection("EPSG:900913"),
                displayProjection: new OpenLayers.Projection("EPSG:4326")
            } );

            // Add Base map.
            layer = new OpenLayers.Layer.OSM("Base Map", "tiles/base/${z}/${x}/${y}.jpg", {numZoomLevels: 7, alpha: false, isBaseLayer: true});
            map.addLayer(layer);

            // Add Layers.
            layer = new OpenLayers.Layer.OSM("Terrain", "tiles/terrain/${z}/${x}/${y}.png", {numZoomLevels: 7, alpha: false, isBaseLayer: false});
            map.addLayer(layer);
            layer = new OpenLayers.Layer.OSM("Lables", "tiles/lables/${z}/${x}/${y}.png", {numZoomLevels: 7, alpha: false, isBaseLayer: false});
            map.addLayer(layer);

            var switcherControl = new OpenLayers.Control.LayerSwitcher();
            map.addControl(switcherControl);
            switcherControl.maximizeControl();

            if( ! map.getCenter() ){
                var lonLat = new OpenLayers.LonLat(10, 10).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
                map.setCenter (lonLat, 5);
            }
        }

    </script>
</head>
    <body onload="init();">
    <div style="width:100%; height:100%" id="map"></div>
</body>

</html>

В основном, все, что мне нужно, это один слой Базовой карты (jpg) и несколько дополнительных слоев (png с прозрачностью), использующих TMS, 256x256, 7 уровней масштабирования и расположенных по адресу: tile / layername /...'

1 Ответ

0 голосов
/ 14 августа 2012

Не уверен, но это может помочь:

http://trac.osgeo.org/openlayers/wiki/UsingCustomTiles

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...