Javascript OpenLayers-拒绝最大范围缩放的地图
如果你一直在修改OpenLayers的一些代码,一个副作用是Google Street的基础层不再显示一个合理的地图,而是缩小到一个3倍的世界视图。我在代码中加入的任何api建议都不能起作用 同样的代码——但经过重新排列——在过去可以正常工作(但不幸的是,不允许更大的画面正常工作) 我对所有这些都是新手,已经走出了我的舒适区,因此,如果能检查一下代码的合理性,我将不胜感激:Javascript OpenLayers-拒绝最大范围缩放的地图,javascript,openlayers,Javascript,Openlayers,如果你一直在修改OpenLayers的一些代码,一个副作用是Google Street的基础层不再显示一个合理的地图,而是缩小到一个3倍的世界视图。我在代码中加入的任何api建议都不能起作用 同样的代码——但经过重新排列——在过去可以正常工作(但不幸的是,不允许更大的画面正常工作) 我对所有这些都是新手,已经走出了我的舒适区,因此,如果能检查一下代码的合理性,我将不胜感激: function ProfileMap(mapName) { this.name = ma
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]);
}
}
函数配置文件映射(mapName)
{
this.name=mapName;
this.layers=[];
//定义地图选项
变量映射选项={
投影:墨卡托,
单位:“m”,
maxExtent:世界
};
//定义基础层
var baselayer=new OpenLayers.Layer.Google(
“谷歌街”,
{numZoomLevels:20,spehericalMercator:2}
);
this.init=函数(mapdiv,keydiv)
{
var layerswitcher=new OpenLayers.Control.layerswitcher(
{div:document.getElementById(keydiv)}
);
this.map=newOpenLayers.map(mapdiv,mapoptions);
this.map.addLayer(baselayer);
this.map.setCenter(mapcenter);
this.map.zoomToMaxExtent();
};
this.addMapLayer=函数(layerName)
{
var layerid=this.layers.length;
this.layers[layerid]=新的OpenLayers.Layer.Markers(layerName);
this.map.addLayer(this.layers[layerid]);
}
}
//通过调用此函数实际创建的映射
函数createMap(mapName、div、keydiv、mapLayers)
{
mapName=新的ProfileMap(mapName);
init(div,keydiv);
对于(var i=0;i
有一件事可能是您拼错了SphereCalmercator。它还接受布尔值,而不是数字
sphericalMercator: true
更新#1:
请更改此项:
var mapoptions = {
projection: mercator,
units: "m",
maxExtent: world
};
为此:
var mapoptions = {
projection: new OpenLayers.Projection("EPSG:900913"),
units: "m",
maxExtent: world
};
谢谢你发现了。我在代码中更改了它,但似乎没有解决问题。奇怪的是,这些错误是从工作代码中剪切粘贴的@克里斯汀·梅恩:有趣的是,工作代码是一个相对的东西。好的,试试我的更新。再次感谢。我试过了,没有改变。我注意到3倍世界宽度与div的宽度大小相匹配。div的高度大于1倍世界高度。这可能与地图周围的样式有关,还是应该没有区别?告诉你真相,我在理解或想象你的问题方面有困难。你能把你的代码放在一个公共的URL中,这样我们就可以看到到底发生了什么?好吧-我可能需要一段时间才能从系统的其余部分中删除所有的包含项,但是请耐心等待,我会在我完成后通知你,你能不能在一个公共的URL上公开你的页面,这样我们就可以测试它,更好地了解问题是什么?或这将使你的问题更快地得到解决。