Если менялись некоторые коды 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]);
}
}