refactor(map): 重构地图组件并添加缩放限制
-移除 HelloWorld.vue 文件 - 在 TiandituMap.vue 和 WipeEffectMap.vue 中添加地图缩放限制 - 更新 tianditu.js 配置文件,增加 MIN_ZOOM 和 MAX_ZOOM 常量 - 在 splitScreen.js 中为分屏地图添加缩放限制
This commit is contained in:
parent
6ae6c25d34
commit
44f895e1b1
|
@ -1,67 +0,0 @@
|
|||
<template>
|
||||
<div class="map-container">
|
||||
<div id="mapDiv" class="map-div"></div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { onMounted, ref } from 'vue'
|
||||
|
||||
// 定义 props
|
||||
const props = defineProps({
|
||||
msg: String
|
||||
})
|
||||
|
||||
// 地图实例引用
|
||||
const mapInstance = ref(null)
|
||||
|
||||
onMounted(() => {
|
||||
// 确保天地图 API 已加载
|
||||
if (typeof T !== 'undefined') {
|
||||
mapInstance.value = new T.Map('mapDiv')
|
||||
|
||||
|
||||
// 添加地图类型控件
|
||||
let ctrl = new T.Control.MapType([
|
||||
{
|
||||
title: "卫星混合",
|
||||
icon: "https://api.tianditu.gov.cn/v4.0/image/map/maptype/satellitepoi.png",
|
||||
layer: TMAP_HYBRID_MAP,
|
||||
},
|
||||
{
|
||||
title: "地图",
|
||||
icon: "https://api.tianditu.gov.cn/v4.0/image/map/maptype/vector.png",
|
||||
layer: TMAP_NORMAL_MAP,
|
||||
},
|
||||
]);
|
||||
|
||||
// 设置控件位置
|
||||
ctrl.setPosition(window.T_ANCHOR_TOP_RIGHT);
|
||||
mapInstance.value.addControl(ctrl);
|
||||
|
||||
|
||||
// 设置地图中心点和缩放级别
|
||||
mapInstance.value.centerAndZoom(new T.LngLat(121.4737, 31.2304), 10);
|
||||
|
||||
console.log('地图初始化成功')
|
||||
} else {
|
||||
console.error('天地图 API 未加载')
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.map-container {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.map-div {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
|
@ -49,7 +49,9 @@ const initMap = () => {
|
|||
layers: vectorLayers,
|
||||
view: new View({
|
||||
center: fromLonLat(TIANDITU_CONFIG.DEFAULT_CENTER),
|
||||
zoom: TIANDITU_CONFIG.DEFAULT_ZOOM
|
||||
zoom: TIANDITU_CONFIG.DEFAULT_ZOOM,
|
||||
minZoom: TIANDITU_CONFIG.MIN_ZOOM,
|
||||
maxZoom: TIANDITU_CONFIG.MAX_ZOOM
|
||||
}),
|
||||
controls: controls
|
||||
})
|
||||
|
|
|
@ -82,7 +82,9 @@ const initMap = () => {
|
|||
target: mapDiv.value,
|
||||
view: new View({
|
||||
center: fromLonLat(TIANDITU_CONFIG.DEFAULT_CENTER),
|
||||
zoom: TIANDITU_CONFIG.DEFAULT_ZOOM
|
||||
zoom: TIANDITU_CONFIG.DEFAULT_ZOOM,
|
||||
minZoom: TIANDITU_CONFIG.MIN_ZOOM,
|
||||
maxZoom: TIANDITU_CONFIG.MAX_ZOOM
|
||||
}),
|
||||
controls: controls,
|
||||
})
|
||||
|
|
|
@ -31,6 +31,10 @@ export const TIANDITU_CONFIG = {
|
|||
// 默认缩放级别
|
||||
DEFAULT_ZOOM: 14,
|
||||
|
||||
// 缩放级别限制
|
||||
MIN_ZOOM: 1,
|
||||
MAX_ZOOM: 18,
|
||||
|
||||
// OpenLayers 投影配置
|
||||
PROJECTION: 'EPSG:4326'
|
||||
}
|
|
@ -7,6 +7,7 @@ import TileLayer from 'ol/layer/Tile'
|
|||
import XYZ from 'ol/source/XYZ'
|
||||
import { fromLonLat } from 'ol/proj'
|
||||
import { defaults } from 'ol/control';
|
||||
import { TIANDITU_CONFIG } from '../config/tianditu.js'
|
||||
|
||||
/**
|
||||
* 分屏地图管理器
|
||||
|
@ -162,7 +163,9 @@ export class SplitScreenManager {
|
|||
target: container,
|
||||
view: new View({
|
||||
center: fromLonLat(options.center),
|
||||
zoom: options.zoom
|
||||
zoom: options.zoom,
|
||||
minZoom: TIANDITU_CONFIG.MIN_ZOOM,
|
||||
maxZoom: TIANDITU_CONFIG.MAX_ZOOM
|
||||
}),
|
||||
controls: controls
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue