为什么 openlayers 在地图点击时返回投影坐标?
Why openlayers is returning projected coordinates on map click?
我参与了 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]);
};
点击事件似乎没有输出地图投影中的坐标。
一些想法?
任何帮助将不胜感激。
coordsDiv.textContent = 'lat: ' + Math.round(event.latLng.lat()) + ', ' + 'lng: ' + Math.round(event.latLng.lng());
默认视图是 EPSG:3857(球形墨卡托),这就是您看到的坐标。
您需要将 EPSG:4258 指定为视图投影。有关如何指定自定义视图投影的示例,请参阅:http://openlayers.org/en/v3.10.1/examples/sphere-mollweide.html?q=mollweide。
我参与了 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]);
};
点击事件似乎没有输出地图投影中的坐标。 一些想法? 任何帮助将不胜感激。
coordsDiv.textContent = 'lat: ' + Math.round(event.latLng.lat()) + ', ' + 'lng: ' + Math.round(event.latLng.lng());
默认视图是 EPSG:3857(球形墨卡托),这就是您看到的坐标。
您需要将 EPSG:4258 指定为视图投影。有关如何指定自定义视图投影的示例,请参阅:http://openlayers.org/en/v3.10.1/examples/sphere-mollweide.html?q=mollweide。