|
|
@@ -0,0 +1,88 @@
|
|
|
+<!-- vue3引入百度api -->
|
|
|
+<template>
|
|
|
+ <div class="mapBox">
|
|
|
+ <div id="allmap"></div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup>
|
|
|
+import { onMounted } from "vue";
|
|
|
+import { Engine, EmptySky } from "mapv-three";
|
|
|
+onMounted(() => {
|
|
|
+ loadMapScript(); // 加载百度地图资源
|
|
|
+});
|
|
|
+// 初始化地图
|
|
|
+const init = () => {
|
|
|
+ const center = [112.95941, 28.17741];
|
|
|
+ const Bmap = window.BMap; // 注意要带window,不然会报错(注意官方api,会有改动,之前是Bmap,后面3.0版本改为了BMap,最好查文档或者打印一下window)
|
|
|
+ const map = new Bmap.Map("allmap"); // allmap必须和dom上的id一直
|
|
|
+
|
|
|
+ map.setCurrentCity("成都");
|
|
|
+ map.enableScrollWheelZoom(true);
|
|
|
+ map.setMapStyleV2({
|
|
|
+ styleId: '62ce43ad2a1362c23e612b783d7406e7'
|
|
|
+ });
|
|
|
+ map.centerAndZoom(new window.Bmap.Point(center[0], center[1]), 22);
|
|
|
+ map.enableScrollWheelZoom(true);
|
|
|
+ // map.enableKeyboard();
|
|
|
+ // map.enableInertialDragging();
|
|
|
+ // map.enableContinuousZoom();
|
|
|
+ map.setTilt(70); //地图水平面
|
|
|
+ map.setHeading(10); //地图旋转值
|
|
|
+ const engine = new Engine(map, {});
|
|
|
+ engine.map.setCenter(center);
|
|
|
+ engine.rendering.useMrt = true;
|
|
|
+ engine.rendering.shadow.enabled = true;
|
|
|
+ engine.rendering.animationLoopFrameTime = 40;
|
|
|
+ engine.rendering.colorAdjust.saturation = 0.25;
|
|
|
+ engine.rendering.colorAdjust.contrast = 0.15;
|
|
|
+ engine.rendering.colorAdjust.brightness = 0;
|
|
|
+
|
|
|
+ const sky = engine.add(new EmptySky());
|
|
|
+ sky.time = 3600 * 16.5;
|
|
|
+};
|
|
|
+const loadMapScript = () => {
|
|
|
+ // 此处在所需页面引入资源就是,不用再public/index.html中引入
|
|
|
+ var script = document.createElement("script");
|
|
|
+ script.type = "text/javascript";
|
|
|
+ script.className = "loadmap"; // 给script一个类名
|
|
|
+ script.src =
|
|
|
+ "https://api.map.baidu.com/getscript?v=3.0&ak=jWDCUpsk33htQsF6IEwk4ctkERTOFFH0";
|
|
|
+ // 此处需要注意:申请ak时,一定要应用类别一定要选浏览器端,不能选服务端,不然地图会报ak无效
|
|
|
+ script.onload = () => {
|
|
|
+ // 使用script.onload,待资源加载完成,再初始化地图
|
|
|
+ init();
|
|
|
+ };
|
|
|
+ let loadmap = document.getElementsByClassName("loadmap");
|
|
|
+ if (loadmap) {
|
|
|
+ // 每次append script之前判断一下,避免重复添加script资源标签
|
|
|
+ for (var i = 0; i < loadmap.length; i++) {
|
|
|
+ document.body.removeChild(loadmap[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ document.body.appendChild(script);
|
|
|
+};
|
|
|
+</script>
|
|
|
+<style scoped>
|
|
|
+/* 去除水印 */
|
|
|
+::v-deep(.BMap_cpyCtrl) {
|
|
|
+ display: none;
|
|
|
+}
|
|
|
+
|
|
|
+::v-deep(.anchorBL) {
|
|
|
+ display: none !important;
|
|
|
+}
|
|
|
+
|
|
|
+.mapBox {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+}
|
|
|
+
|
|
|
+#allmap {
|
|
|
+ /* // 注意给dom宽高,不然地图不出来 */
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ margin: auto;
|
|
|
+ padding: 0;
|
|
|
+}
|
|
|
+</style>
|