@vuemap/vue-amap是基于高德JSAPI2.0、Loca2.0封装的vue组件库,支持vue2、vue3版本。首页地址:vue-amap.guyixi.cn/
在上一个分享中,主要讲解了单信息框与多信息框的使用的使用情况,这一次分享着重讲怎么在高德地图中加载第三方瓦片的使用技巧。
对于瓦片加载,日常使用时会碰到两种坐标系,一个是基于WGS84生成的瓦片、另一个是基于火星坐标系生成的瓦片。高德地图本身只支持火星坐标系的瓦片,但高德提供了GlCustomLayer对象,可以自定义实现加载其他坐标系瓦片的能力,因此,基于GlCustomLayer我实现了一个瓦片纠偏插件,用于加载BD09(百度使用的坐标系,基于火星坐标系再次加密)和WGS84坐标系的瓦片数据。插件地址
火星坐标系瓦片加载
火星坐标系的瓦片加载是最简单,直接使用el-amap-layer-tile
即可加载瓦片。 示例代码如下:
html
<template>
<div class="map-page-container">
<el-amap
:center="center"
:zoom="zoom"
>
<el-amap-layer-tile
:tile-url="'https://wprd0{1,2,3,4}.is.autonavi.com/appmaptile?x=[x]&y=[y]&z=[z]&size=1&scl=1&style=8<ype=11'"
:visible="visible"
/>
</el-amap>
</div>
<div class="toolbar">
<button @click="switchVisible()">
{{ visible? '隐藏' : '显示' }}
</button>
</div>
</template>
<script lang="ts" setup>
import {ref} from "vue";
import {ElAmap, ElAmapLayerTile} from "@vuemap/vue-amap";
const zoom = ref(12);
const center = ref([121.59996, 31.197646]);
const visible = ref(true)
const switchVisible = () => {
visible.value = !visible.value;
}
</script>
<style>
</style>
效果图:
加载其他坐标系瓦片
当需要加载其他坐标系瓦片时我们就需要使用el-amap-layer-custom-xyz
图层来进行瓦片纠偏。 模拟的示例如下:
html
<template>
<div class="map-page-container">
<el-amap
:show-label="false"
:center="center"
:zoom="zoom"
:pitch="60"
view-mode="3D"
>
<el-amap-layer-custom-xyz
url="https://maponline{s}.bdimg.com/starpic/?qt=satepc&u=x={x};y={y};z={z};v=009;type=sate&fm=46"
:subdomains="subdomains"
proj="bd09"
tileType="bd09"
:visible="visible"
/>
</el-amap>
</div>
<div class="toolbar">
<button @click="switchVisible()">
{{ visible ? '隐藏' : '显示' }}
</button>
</div>
</template>
<script lang="ts" setup>
import {ref} from "vue";
import {ElAmap, ElAmapLayerCustomXyz} from "@vuemap/vue-amap";
const center = ref([116.335036, 39.900082])
const zoom = ref(8)
const visible = ref(true)
const subdomains = ref(["1", "2", "3"])
const switchVisible = () => {
visible.value = !visible.value;
}
</script>
<style>
</style>
效果图 根据文档调整参数还可以实现掩膜,瓦片增加海拔实现瓦片浮空效果。