为什么openlayers在地图点击时返回投影坐标
Why openlayers is returning projected coordinates on map click?
我参与了一个使用ol3(v3.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]);
};
看起来点击事件不会输出地图投影中的坐标。一些想法?如有任何帮助,我们将不胜感激。
默认视图为EPSG:3857(球形mercator),因此这就是您所看到的坐标。
您需要将EPSG:4258指定为视图投影。请参阅:http://openlayers.org/en/v3.10.1/examples/sphere-mollweide.html?q=mollweide有关如何指定自定义视图投影的示例。
coordsDiv.textContent='lat:'+Math.round(event.latLng.lat())+','+'lng:'+Math.round(event.lateLng.lng());
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- JSONP请求返回结果,但也触发error_callback
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- JS验证ajax返回的html中的表单数据
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- MongoDB投影将子对象作为列返回
- D3 albersUsa 投影函数返回空值
- 投影([lat,lng])一直返回null
- 为什么openlayers在地图点击时返回投影坐标