OpenLayers - Карта отказывается от увеличения до максимальной степени - PullRequest
0 голосов
/ 01 марта 2012

Если менялись некоторые коды OpenLayers, и одним из побочных эффектов является то, что базовый слой Google Street больше не отображает разумную карту, а вместо этого увеличивает масштаб в 3 раза.Ничто из того, что я положил в код, который предлагает API, не должно работать.

Тот же код - но переставленный - работал нормально в прошлом (но, к сожалению, не позволял работать большей картине)

Я новичок во всем этом и выход из своего комфортазона, так что проверка работоспособности кода будет высоко ценится:

    function ProfileMap(mapName)
    {
        this.name = mapName;
        this.layers = [];

        // define Map options
        var mapoptions = {
                projection: mercator,
                units: "m",
                maxExtent: world
        };

        // define Base Layer
        var baselayer = new OpenLayers.Layer.Google(
                "Google Streets", 
                {numZoomLevels: 20, spehericalMercator: 2}
        );  


        this.init = function(mapdiv, keydiv)
        {
            var layerswitcher = new OpenLayers.Control.LayerSwitcher(
                    {div: document.getElementById(keydiv)}
            );      

            this.map = new OpenLayers.Map(mapdiv, mapoptions);
            this.map.addLayer(baselayer);
            this.map.setCenter(mapcenter);
            this.map.zoomToMaxExtent();

        };

        this.addMapLayer = function(layerName)
        {
            var layerid = this.layers.length;
            this.layers[layerid] = new OpenLayers.Layer.Markers(layerName);
            this.map.addLayer(this.layers[layerid]);
        }

    }


    // Map actually created by a call to this function
    function createMap(mapName, div, keydiv, mapLayers)
    {
        mapName = new ProfileMap(mapName);
        mapName.init(div, keydiv);
        for(var i=0; i < mapLayers.length; i++)
        {
            mapName.addMapLayer(mapLayers[i]);
        }

    }

1 Ответ

0 голосов
/ 01 марта 2012

Возможно, вы ошиблись sphericalMercator Также он принимает логическое значение, а не числовое.

sphericalMercator: true

Ссылка

Обновление № 1:

Пожалуйста, измените это:

var mapoptions = {
    projection: mercator,
    units: "m",
    maxExtent: world
};

для этого:

var mapoptions = {
    projection: new OpenLayers.Projection("EPSG:900913"),
    units: "m",
    maxExtent: world
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...