openlayers 坐标转换
tranform与fromLonLat、toLonLat的区别
- 有关坐标转换的包都在ol/proj中
- 其中EPSG:3857和EPSG:4326坐标系之间的转换有transform、fromLonLat、toLonLat
- fromLonLat是将EPSG:4326转换为EPSG:3857;
- toLonLat是将EPSG:3857转换为EPSG:4326
- transform([坐标], 'EPSG:3857', 'EPSG:4326');
transform的用法是
transform([坐标], 'EPSG:3857', 'EPSG:4326');
transform([坐标], 'EPSG:4326', 'EPSG:3857');
- transform的转换和fromLonLat、toLonLat的区别是:transform转换之后的经度可能是几千,而toLonLat转换之后的经度位于[-180, 180]之间。
- 因为地图是不断拓展的,一个地方一直往右拖,同一个地方的经度是±360的变化
数据源转换坐标
const source = new ol.source.Vector({
format: new ol.format.GeoJSON({
defaultDataProjection: 'EPSG:4326'
})
})
批量转一组数据
new MultiPolygon(coordinates).transform('EPSG:4326','EPSG:3857')
GeoJSON 转换
new GeoJSON().readFeature(geoJson, {
dataProjection: 'EPSG:4326', // 元数据的投影坐标
featureProjection: "EPSG:3857" //规定要素以哪种坐标显示
})