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,
|
layers: vectorLayers,
|
||||||
view: new View({
|
view: new View({
|
||||||
center: fromLonLat(TIANDITU_CONFIG.DEFAULT_CENTER),
|
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
|
controls: controls
|
||||||
})
|
})
|
||||||
|
|
|
@ -82,7 +82,9 @@ const initMap = () => {
|
||||||
target: mapDiv.value,
|
target: mapDiv.value,
|
||||||
view: new View({
|
view: new View({
|
||||||
center: fromLonLat(TIANDITU_CONFIG.DEFAULT_CENTER),
|
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,
|
controls: controls,
|
||||||
})
|
})
|
||||||
|
|
|
@ -31,6 +31,10 @@ export const TIANDITU_CONFIG = {
|
||||||
// 默认缩放级别
|
// 默认缩放级别
|
||||||
DEFAULT_ZOOM: 14,
|
DEFAULT_ZOOM: 14,
|
||||||
|
|
||||||
|
// 缩放级别限制
|
||||||
|
MIN_ZOOM: 1,
|
||||||
|
MAX_ZOOM: 18,
|
||||||
|
|
||||||
// OpenLayers 投影配置
|
// OpenLayers 投影配置
|
||||||
PROJECTION: 'EPSG:4326'
|
PROJECTION: 'EPSG:4326'
|
||||||
}
|
}
|
|
@ -7,6 +7,7 @@ import TileLayer from 'ol/layer/Tile'
|
||||||
import XYZ from 'ol/source/XYZ'
|
import XYZ from 'ol/source/XYZ'
|
||||||
import { fromLonLat } from 'ol/proj'
|
import { fromLonLat } from 'ol/proj'
|
||||||
import { defaults } from 'ol/control';
|
import { defaults } from 'ol/control';
|
||||||
|
import { TIANDITU_CONFIG } from '../config/tianditu.js'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分屏地图管理器
|
* 分屏地图管理器
|
||||||
|
@ -162,7 +163,9 @@ export class SplitScreenManager {
|
||||||
target: container,
|
target: container,
|
||||||
view: new View({
|
view: new View({
|
||||||
center: fromLonLat(options.center),
|
center: fromLonLat(options.center),
|
||||||
zoom: options.zoom
|
zoom: options.zoom,
|
||||||
|
minZoom: TIANDITU_CONFIG.MIN_ZOOM,
|
||||||
|
maxZoom: TIANDITU_CONFIG.MAX_ZOOM
|
||||||
}),
|
}),
|
||||||
controls: controls
|
controls: controls
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue