sle*_*vin 3 openstreetmap openlayers-3
我想在我的 Openlayers 3.9.0 地图上设置扩展。
当页面加载时,我希望地图已经在该范围内居中,无论图层如何。所以我想我会设置一个扩展视图,对吧?
地图包含单个 OSM 层,例如
var layer = new ol.layer.Tile({
source: new ol.source.OSM(
{
attributions: [
new ol.Attribution({
html: 'All maps © ' +
'<a href="http://www.opencyclemap.org/">OpenCycleMap</a>'
})
]
}
),
opacity: 0.8,
brightness: 0.8
});
Run Code Online (Sandbox Code Playgroud)
然后我设置了视图
var center = ol.proj.transform([21.54967, 38.70250], 'EPSG:4326', 'EPSG:3857');
var view = new ol.View({
center: center,
zoom: 6,
extent: [2297128.5,4618333.0 , 2459120.25,4763120.0]
});
Run Code Online (Sandbox Code Playgroud)
然后是地图
var map = new ol.Map({
target: 'map',
layers: [layer],
view: view,
});
Run Code Online (Sandbox Code Playgroud)
我在一个旧项目中使用了我的扩展,带有EPSG 900913. 因此,为了将扩展从900913默认的 Openlayers 3 转换为默认的 Openlayers 3,3857我来到了这里,并将
2297128.5, 4618333其转换为2297128.5,4618333.0
进而
2459120.25, 4763120转换为2459120.25,4763120.0
我的两个问题
1-转换后的坐标看起来很相似。我做错什么了吗?
2-地图居中正常,但没有放大扩展。坐标定义了希腊的一个县,地图不会缩放到那里,我看到了整个希腊,以及土耳其和意大利。
我做错了什么?谢谢
感谢大家。我所做的是
保持 OSM 层不变。
明确县域范围。原来是EPSG 900913
var countyLimits= ol.proj.transformExtent([2297128.5, 4618333, 2459120.25, 4763120], 'EPSG:900913', 'EPSG:3857');
Run Code Online (Sandbox Code Playgroud)
现在查看的是
var view = new ol.View({
center: center,
zoom: 6,
extent : countyLimits,
maxZoom:20
});
Run Code Online (Sandbox Code Playgroud)
地图是
var map = new ol.Map({
target: 'map',
layers:[layer],
view: view
});
Run Code Online (Sandbox Code Playgroud)
定义地图后,将其视图调整到限制范围内
map.getView().fit(countyLimits, map.getSize());
//get the view of the map and fit it to the limits, according to the map's size
Run Code Online (Sandbox Code Playgroud)
fitExtend现在已弃用,所以我使用了fit. 它是实验性的,但我想自从它被取代后它就会成为标准fitExtend。
无论如何谢谢人们
来源
| 归档时间: |
|
| 查看次数: |
4159 次 |
| 最近记录: |