我很难尝试更改地图视图的默认投影。
这是一个JSFIDDLE:http://jsfiddle.net/qtcpjape/3/
$( document ).ready(function() {
var proj = new ol.proj.Projection({
code: 'EPSG:4326',
units: 'm',
extent: [-180.0000, -90.0000, 180.0000, 90.0000]
});
var map = new ol.Map({
target: 'map',
controls: [],
layers: [
new ol.layer.Tile({
source: new ol.source.MapQuest({
layer: 'osm'
})
})
],
view: new ol.View({
center: [-90.78885827595732, 38.78662388327825],
projection: proj,
zoom: 15
})
});
});
我将使用来自EPSG中的REST调用的GeoJSON:4326,我想轻松映射它。
现在,我似乎无法让地图改变投影并显示实际的中心。
任何帮助将不胜感激!谢谢!
答案 0 :(得分:3)
当您使用MapQuest图块时,您的地图必须位于EPSG:3857
中,因为ol3不支持光栅重投影(从版本3.11.0开始支持光栅重投影,但性能不佳通常建议重新投影矢量数据的原因)。但是,通过在vector source上设置目标投影,您的GeoJSON矢量数据可以从EPSG:4326
动态重新投影到EPSG:3857
。
例如:
var vectorSource = new ol.source.GeoJSON({
...
projection: 'EPSG:3857'
});
var vectorLayer = new ol.layer.Vector({
source: vectorSource
});
var map = new ol.Map({
target: 'map',
controls: [],
layers: [
new ol.layer.Tile({
source: new ol.source.MapQuest({
layer: 'osm'
})
}),
vectorLayer
],
view: new ol.View({
center: ol.proj.transform([6, 49], 'EPSG:4326', 'EPSG:3857'),
zoom: 3,
projection: 'EPSG:3857'
})
});
答案 1 :(得分:2)
从OpenLayers 3.11.0开始,现在可以重新投影栅格源。查看release notes。
因此,只需在视图(您已经执行过)和所有源(您当前没有)上明确指定投影。 OpenLayers完成其余的工作!