[英]Openlayers 3 center map
我正在唱OpenLayers 3来显示地图。 我想使用latLon坐标使地图居中。 我正在使用快速启动代码 。 使用此代码,我无法更改地图的中心。 我认为这与Spherical Mercator projection
。 唯一的问题是,我只有lat lon坐标。
有谁知道如何从openlayers v3中心地图?
您需要使用将lon / lat坐标转换为正确的投影(或坐标系)
var olCoordinates = ol.proj.transform([lon, lat],"WGS84", "EPSG:900913")
现在您可以使用olCorrdinates设置中心。
不同的投影具有不同的代号。 WGS84是“普通”lon / lat和EPSG:900913是网络地图中经常使用的投影,如谷歌地图,openstreetmap和bing。
我认为OpenLayers 3内置支持从WGS84 / EPSG转换:4326(lon / lat),但是如果你需要转换到其他坐标系或从其他坐标系转换,你可以包含proj4js库。 Openlayers将与此lib集成,并能够以相同的方式进行转换。
转换文档http://openlayers.org/en/v3.1.1/apidoc/ol.proj.html
Proj4 lib https://github.com/proj4js/proj4js
编辑:在您参考的示例中,中心位置实际上是使用lon / lat设置的。
view: new ol.View({
center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),
zoom: 4
})
EPSG:4326实际上与WGS84和EPSG相同:3857与EPSG相同:900913。 这非常令人困惑。 我自己去过那儿。
您只需将数字37.41和8.82更改为您的lon / lat坐标。 如果要在初始化后更改中心位置,则需要使用setCenter();
map.getView().setCenter(ol.proj.transform([lon, lat], 'EPSG:4326', 'EPSG:3857'))
OpenLayers 于2015年3月推出了ol.proj.fromLonLat
和ol.proj.toLonLat
函数。
要使地图居中,您可能希望在初始化期间使用它
view: new ol.View({
center: ol.proj.fromLonLat([lon, lat])
})
或者在创建地图之后
map.getView().setCenter(ol.proj.fromLonLat([lon, lat]))
虽然它们只是 ol.proj.transform
包装器 , ol.proj.transform
我发现它们更易于使用。
默认的Web Mercators是EPSG:4326
和EPSG:3857
。
与Ole Borgersen所说的一样, WGS84
与EPSG:4326
相同EPSG:4326
这是我们习惯使用的Long-Lat坐标的类型。
ol.proj.fromLonLat([lon, lat]);
// is equivalent of
ol.proj.transform([lon, lat], 'EPSG:4326', 'EPSG:3857')
ol.proj.toLonLat([lon, lat]);
// is equivalent of
ol.proj.transform([lon, lat], 'EPSG:3857', 'EPSG:4326')
取决于你如何使用?
仅限浏览器使用:
<script src='https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.3.0/build/ol.js'></script>
ol.proj.transform()
ol.proj.transform([long, lat], 'EPSG:4326', 'EPSG:3857');
对于js-app使用
// for projection
import {transform} from 'ol/proj.js';
// use this one : transform([-118.246521, 34.049039], 'EPSG:4326', 'EPSG:3857')
var map = new Map({
layers: layers,
target: 'map',
view: new View({
//center: [-118.246521, 34.049039],
center: transform([-118.246521, 34.049039], 'EPSG:4326', 'EPSG:3857'),
zoom: 16
})
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.