Przeglądaj źródła

添加高德地图对WGS84的支持

tags/1.14.3
Caven Chen 4 lat temu
rodzic
commit
3031c4c9b7

+ 4
- 0
src/core/imagery/provider/AmapImageryProvider.js Wyświetl plik

@@ -4,6 +4,7 @@
*/

import ImageryType from '../ImageryType'
import AmapMercatorTilingScheme from '../tiling-scheme/AmapMercatorTilingScheme'

const { Cesium } = DC.Namespace

@@ -17,6 +18,9 @@ class AmapImageryProvider extends Cesium.UrlTemplateImageryProvider {
constructor(options = {}) {
options['url'] = options.style === 'img' ? IMG_URL : ELEC_URL
options['subdomains'] = options.subdomains || ['01', '02', '03', '04']
if (options.crs === 'WGS84') {
options['tilingScheme'] = new AmapMercatorTilingScheme()
}
super(options)
}
}

+ 39
- 0
src/core/imagery/tiling-scheme/AmapMercatorTilingScheme.js Wyświetl plik

@@ -0,0 +1,39 @@
/**
* @Author: Caven
* @Date: 2021-01-31 22:07:05
*/

import CoordTransform from '../../transform/CoordTransform'

class AmapMercatorTilingScheme extends Cesium.WebMercatorTilingScheme {
constructor(options) {
super(options)
let projection = new Cesium.WebMercatorProjection()
this._projection.project = function(cartographic, result) {
result = CoordTransform.WGS84ToGCJ02(
Cesium.Math.toDegrees(cartographic.longitude),
Cesium.Math.toDegrees(cartographic.latitude)
)
result = projection.project(
new Cesium.Cartographic(
Cesium.Math.toRadians(result[0]),
Cesium.Math.toRadians(result[1])
)
)
return new Cesium.Cartesian2(result.x, result.y)
}
this._projection.unproject = function(cartesian, result) {
let cartographic = projection.unproject(cartesian)
result = CoordTransform.GCJ02ToWGS84(
Cesium.Math.toDegrees(cartographic.longitude),
Cesium.Math.toDegrees(cartographic.latitude)
)
return new Cesium.Cartographic(
Cesium.Math.toRadians(result[0]),
Cesium.Math.toRadians(result[1])
)
}
}
}

export default AmapMercatorTilingScheme

Ładowanie…
Anuluj
Zapisz