高德地图导览手绘图制作

🚀 本文主要讲解如何使用高德地图进行手绘图制作,一般用于景区导览地图制作,使用户更加生动、形象的去了解整个景区

在这里插入图片描述

主要讲解整图加载及瓦片分片加载,以Vue3为例

配置高德地图相关依赖

  1. 下载依赖
cnpm i @amap/amap-jsapi-loader --save
  1. 初始化地图
<template>
	<div id="handMap"></div>
</template>

<script setup>
import AMapLoader from "@amap/amap-jsapi-loader"

let AMapIns  = null
let mapIns  = null
let imageLayer  = null
// 初始化地图
const initMap = () => {
    AMapLoader.load({
    key: "高德地图Key",
    version: '2.0',
    plugins: ['AMap.MoveAnimation',  'AMap.ImageLayer', 'AMap.TileLayer'] // 需要使用的的插件列表
  }).then(AMap => {
    AMapIns = AMap
    mapIns = new AMap.Map('handMap', {
      viewMode: "2D",
      zoom: 16, //  地图显示的缩放级别
      zooms: [10, 20],
      center: ["经度", "纬度"], //  地图中心点坐标 此处填【经度,纬度】
      resizeEnable: true  //  是否监控地图容器尺寸变化
    });
  })
}

</script>

<style scoped>
#handMap {
 width: 100%;
 height: 500px
}
</style>

一、手绘图整图加载

弊端:如果手绘图太大,会导致加载很慢,体验不友好
优点:简单、快速使用

// 添加手绘图
const addImageLayer = () => {
   imageLayer = new AMapIns.ImageLayer({
     bounds: new AMapIns.Bounds(
       [106.837106, 29.712762],  // 左下  手绘图左下相对于地图的经纬度
       [106.848727, 29.720554]   // 右上  手绘图右上相对于地图的经纬度
     ),
     // url为手绘图地址
     url: 'https://amappc.cn-hangzhou.oss-pub.aliyun-inc.com/lbs/static/img/dongwuyuan.jpg',
     zIndex: 100,
     zooms: [14, 20] // 设置可见级别,[最小级别,最大级别]
   })
   mapIns.add(imageLayer);
}

二、分片加载

分片加载就是将我们的手绘图以地图等级进行切分成若干个瓦片图
工具一:点击下载
这里我推荐大家使用切图工具MapCutter,它可以将我们的手绘图自定义等级切分成若干瓦片图,可以手动调整手绘图基于地图的位置,重合度较高。免费基础版可以使用但是有水印,可用于测试,完整版需要付费,基础版1000,完整版3000
MapCutter:工具博客
作者联系方式:在软件注册中有信息
工具二:下载地址
开源的一款切片应用,免费,缺点:切大图容易卡死、与地图重合度较低,不推荐使用

这里推荐大家使用工具一,比较稳定,易操作,本人已购买

在这里插入图片描述

切图完成之后会生成tiles文件夹,将文件夹放入项目public文件夹下或者上传至服务器

  1. 使用
// 初始化地图 做出修改
const initMap = () => {
	AMapLoader.load({
	   key: "高德地图Key",
	   version: '2.0',
	   plugins: ['AMap.MoveAnimation',  'AMap.ImageLayer', 'AMap.TileLayer'] // 需要使用的的插件列表
	  }).then(AMap => {
	    AMapIns = AMap
	    addImageLayer()
	    var layer = new AMap.createDefaultLayer({
	      visible: true,    // 是否可见
	      opacity: 1,       // 透明度
	      zIndex: 0         // 叠加层级
	    })
	    mapIns = new AMap.Map('handMap', {
	      viewMode: "2D",
	      zoom: 16, //  地图显示的缩放级别
	      zooms: [15, 18],
	       center: ["经度", "纬度"], //  地图中心点坐标 此处填【经度,纬度】
	      layers: [layer, imageLayer],
	      resizeEnable: true,
	      animateEnable: false
	    });
	})
}
// 添加手绘图
const addImageLayer = () => {
  imageLayer = new AMapIns.TileLayer({
    getTileUrl: function (lng, lat, zoom) {
      let url = '/public'
      return url + `/tiles/${zoom}/${lng}_${lat}.png`;
    },
    opacity: 1,
    zIndex: 100,
  });
}

🚀🚀🚀 这样手绘图就制作完成了 🚀🚀🚀

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端阿皓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值