refactor(map): 重构地图组件并添加缩放限制

-移除 HelloWorld.vue 文件
- 在 TiandituMap.vue 和 WipeEffectMap.vue 中添加地图缩放限制
- 更新 tianditu.js 配置文件,增加 MIN_ZOOM 和 MAX_ZOOM 常量
- 在 splitScreen.js 中为分屏地图添加缩放限制
This commit is contained in:
zhangtao 2025-08-01 15:47:32 +08:00
parent 6ae6c25d34
commit 44f895e1b1
5 changed files with 23 additions and 79 deletions

View File

@ -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>

View File

@ -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
})

View File

@ -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,
})

View File

@ -31,6 +31,10 @@ export const TIANDITU_CONFIG = {
// 默认缩放级别
DEFAULT_ZOOM: 14,
// 缩放级别限制
MIN_ZOOM: 1,
MAX_ZOOM: 18,
// OpenLayers 投影配置
PROJECTION: 'EPSG:4326'
}

View File

@ -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
})