我参与了ol3的地图项目(v 3.10) 我将地图的投影(我猜)更改为" epsg 4258"这是ETRS89。
var customExtent = [-0.6172644,39.3868231,-0.43508204,39.44951748];
var etrs89 = new ol.proj.Projection({
code: 'EPSG:4258',
// The extent is used to determine zoom level 0. Recommended values for a
// projection's validity extent can be found at http://epsg.io/.
extent: customExtent,
units: 'degrees'
});
现在我使用此投影设置我的地图。
var map = new ol.Map({
controls: ol.control.defaults({
attributionOptions: /** @type {olx.control.AttributionOptions} */ ({
collapsible: false,
units: 'degrees'
})
}).extend([mousePositionControl,new ol.control.FullScreen()]),
target: 'map',
view: new ol.View({
center: ol.proj.fromLonLat([-0.4685, 39.4315]),
zoom: 14
}),
layers: [
ortofoto,
muni_torrent
]
});
最终点击监听器如下所示:
var onclick = function(e){
alert(e.coordinate);
};
map.on('click', onclick);
我得到的输出是:
[-53391.90122271185, 4785457.359197952]
但我期待的是:
[-0.4, 39.9]
我也尝试了以下相同的结果:
var onclick = function(e){
var lonlat = map.getCoordinateFromPixel(e.pixel)
alert('longitud: ' + lonlat[0]+ '; latitud: ' + lonlat[1]);
};
点击事件看起来不会输出地图投影中的坐标。 一些想法? 任何帮助将不胜感激。
答案 0 :(得分:2)
默认视图是EPSG:3857(球形墨卡托),这就是你所看到的坐标。
您需要指定EPSG:4258作为视图投影。有关如何指定自定义视图投影的示例,请参阅:http://openlayers.org/en/v3.10.1/examples/sphere-mollweide.html?q=mollweide。
答案 1 :(得分:-1)
coordsDiv.textContent =' lat:' + Math.round(event.latLng.lat())+',' +' lng:' + Math.round(event.latLng.lng());