百度地图地图修复
This commit is contained in:
parent
9584de8120
commit
bcddf0dbfc
|
@ -0,0 +1,90 @@
|
||||||
|
import * as Cesium from 'cesium';
|
||||||
|
|
||||||
|
class CustomBaiduImageryProvider {
|
||||||
|
constructor(options = {}) {
|
||||||
|
// 使用正确的百度地图瓦片地址
|
||||||
|
this._url = options.url; //"http://online{s}.map.bdimg.com/onlinelabel/?qt=tile&x={x}&y={y}&z={z}&styles=pl&scaler=1&p=1";
|
||||||
|
this._tileWidth = 256;
|
||||||
|
this._tileHeight = 256;
|
||||||
|
this._maximumLevel = 18;
|
||||||
|
this._minimumLevel = 0;
|
||||||
|
|
||||||
|
// 使用之前可以工作的投影参数
|
||||||
|
let southwestInMeters = new Cesium.Cartesian2(-33554054, -33746824);
|
||||||
|
let northeastInMeters = new Cesium.Cartesian2(33554054, 33746824);
|
||||||
|
this._tilingScheme = new Cesium.WebMercatorTilingScheme({
|
||||||
|
rectangleSouthwestInMeters: southwestInMeters,
|
||||||
|
rectangleNortheastInMeters: northeastInMeters,
|
||||||
|
});
|
||||||
|
|
||||||
|
this._rectangle = this._tilingScheme.rectangle;
|
||||||
|
this._credit = undefined;
|
||||||
|
this._ready = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
get url() {
|
||||||
|
return this._url;
|
||||||
|
}
|
||||||
|
|
||||||
|
get tileWidth() {
|
||||||
|
return this._tileWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
get tileHeight() {
|
||||||
|
return this._tileHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
get maximumLevel() {
|
||||||
|
return this._maximumLevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
get minimumLevel() {
|
||||||
|
return this._minimumLevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
get tilingScheme() {
|
||||||
|
return this._tilingScheme;
|
||||||
|
}
|
||||||
|
|
||||||
|
get rectangle() {
|
||||||
|
return this._rectangle;
|
||||||
|
}
|
||||||
|
|
||||||
|
get credit() {
|
||||||
|
return this._credit;
|
||||||
|
}
|
||||||
|
|
||||||
|
get ready() {
|
||||||
|
return this._ready;
|
||||||
|
}
|
||||||
|
|
||||||
|
get hasAlphaChannel() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
getTileCredits() {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
requestImage(x, y, level) {
|
||||||
|
if (!this._ready) {
|
||||||
|
throw new Cesium.DeveloperError("requestImage must not be called before the imagery provider is ready.");
|
||||||
|
}
|
||||||
|
|
||||||
|
const xTiles = this._tilingScheme.getNumberOfXTilesAtLevel(level);
|
||||||
|
const yTiles = this._tilingScheme.getNumberOfYTilesAtLevel(level);
|
||||||
|
|
||||||
|
let baiduX = Math.floor(x - xTiles / 2);
|
||||||
|
let baiduY = Math.floor(yTiles / 2 - y - 1);
|
||||||
|
|
||||||
|
let url = this._url
|
||||||
|
.replace("{x}", baiduX)
|
||||||
|
.replace("{y}", baiduY)
|
||||||
|
.replace("{z}", level)
|
||||||
|
.replace("{s}", Math.floor(Math.random() * 10));
|
||||||
|
|
||||||
|
return Cesium.ImageryProvider.loadImage(this, url);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export { CustomBaiduImageryProvider };
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import * as Cesium from 'cesium';
|
import * as Cesium from 'cesium';
|
||||||
|
import { CustomBaiduImageryProvider } from "./CustomBaiduImageryProvider.js";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
options: {
|
options: {
|
||||||
|
@ -123,7 +124,7 @@ const setMapImg = (options) => {
|
||||||
});
|
});
|
||||||
viewer.imageryLayers.addImageryProvider(tencentVector);
|
viewer.imageryLayers.addImageryProvider(tencentVector);
|
||||||
} else if (options.ditu === 'baidu') {
|
} else if (options.ditu === 'baidu') {
|
||||||
const baiduVector = new Cesium.UrlTemplateImageryProvider({
|
const baiduVector = new CustomBaiduImageryProvider({
|
||||||
url: "http://online{s}.map.bdimg.com/onlinelabel/?qt=tile&x={x}&y={y}&z={z}&styles=pl&scaler=1&p=1",
|
url: "http://online{s}.map.bdimg.com/onlinelabel/?qt=tile&x={x}&y={y}&z={z}&styles=pl&scaler=1&p=1",
|
||||||
});
|
});
|
||||||
viewer.imageryLayers.addImageryProvider(baiduVector);
|
viewer.imageryLayers.addImageryProvider(baiduVector);
|
||||||
|
|
Loading…
Reference in New Issue