高德地图自定义绘制园区区域,区域描边,并添加自定义内容maker标注

本文详细介绍了如何在高德地图上通过API绘制自定义区域,包括使用Prism进行区域填充,添加边界描边以及个性化maker的创建。步骤涉及获取边界坐标,配置Object3DLayer,设置Prism属性,并结合Marker实现站点标注。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

绘制自定义区域

绘制自定义区域第一步需要获取指定区域的边界坐标点list,可以在高德地图官网的工具中获取 高德选点工具,拿到区域边界点list后就是绘制,区域绘制有几种方式,具体可查看高德的API,大体可用Wall和Prism两种方式,区别是wall没有区域填充颜色,Prism可以填充,所以我选择使用Prism进行绘制区域。Prism需要Object3DLayer承载,所以先添加个Object3DLayer,然后将绘制的Prism增加到Object3DLayer中,高德API中也有详细介绍。

// path数据结构为 [{longitude:11.11,latitude:22.22}]
path = path.map((el)=>{
            return new AMap.LngLat(el.longitude,el.latitude)
          })
let object3Dlayer = new AMap.Object3DLayer();
          this.map.add(object3Dlayer);
          let height = -3000; // 区域高度 设置为负有种区域凸起的3D感
          let color = 'rgba(16,73,175,0.35)'; // rgba
          let prism = new AMap.Object3D.Prism({
            path: path, // 这里就是对应的点位数组 注意需要对数字经纬度循环生成 AMap.LngLat
            height: height,
            color: color
          });
          prism.transparent = true;
          object3Dlayer.add(prism)

这样区域就绘制出来了

绘制边界

下一步给区域增加描边,这样区域的边界感更加明显,效果更好,描边选择Polyline 绘制,注意绘制线需要首尾闭合,所以点位list的最后需要增加一个点位的开始position

path.push(new AMap.LngLat(data[0].longitude,data[0].latitude))
//添加区域描边
          new AMap.Polyline({
            path: path,
            strokeColor: "#178DFF",
            strokeWeight: 4,
            map: this.map,
            lineJoin: 'round',
            lineCap: 'round',
          });

这样基本的区域填充和边界描边就好了,基本效果实现,下面就是在区域中增加maker,如站点,设备标注等。

添加自定义maker

高德的maker需要传入img地址,label等参数,有时候限制较多,我们可以设置自定义内容,传入自定义Dom节点,作为maker的内容,这样就没有maker展示内容的限制了,
首先要确定需要增加maker的点位坐标,同样可在高德地图选点工具中获取,确定所标注的站点、设备等坐标点

// 通过隐藏这些maker 使之不展示dom,但是Dom节点会渲染,将节点传入高德的maker这样就会作为maker的内容展示了,maker内容可随意展示 Maker为自定义的Vue组件
<div v-show="false">
      <Maker ref="maker" v-for="(item,index) in makers" :value="item" :key="index"></Maker>
    </div>
    //sites 为需要标注的点位坐标
    sites.forEach((el,index)=>{
            let maker= new AMap.Marker({
              position: new AMap.LngLat(el.longitude,el.latitude),
              content: this.$refs.maker[index].$el, // 这里传入dom
              offset: new AMap.Pixel(0, -34)  //这里注意偏移量,默认左上角定位在坐标点,如需dom中心对准坐标点 则需要 向左向右偏移 宽高的一半 为负数,
            });
            this.map.add(maker)
          })
          

这样区域填充,描边,点位标注就都加好了,具体展示效果如下,仅供参考

仅供参考

### 在 Vue3 中使用高德地图 API 实现地图划区功能 为了在 Vue3 项目中集成高德地图实现绘制多边形区域的功能,可以按照如下方法操作: #### 安装依赖库 首先,在项目根目录下通过 npm 或 yarn 安装 `vue-amap` 插件来简化与高德地图交互的过程。 ```bash npm install vue-amap --save ``` 或者 ```bash yarn add vue-amap ``` #### 初始化配置 接着,在项目的入口文件 main.js 中注册全局组件,加载必要的插件和服务。注意替换 `'你的密钥'` 和 `'你的key'` 为你自己的安全码和开发者 key[^1]。 ```javascript import { createApp } from 'vue'; import App from './App.vue'; // 导入 AMap 组件库 import VueAmap from '@vuemap/vue-amap-taro'; const app = createApp(App); app.use(VueAmap, { // 设置高德地图的安全校验参数 amapKey: '你的key', plugin: ['AMap.PolyEditor', 'AMap.CircleEditor'], }); window._AMapSecurityConfig = { securityJsCode: '你的密钥' }; app.mount('#app'); ``` #### 创建地图实例 之后,在需要展示地图的页面组件内定义 map 对象以及初始化函数 initMap() 来创建地图容器设置初始视图中心点坐标等属性。 ```html <template> <div id="container"></div> </template> <script setup lang="ts"> import { onMounted } from "vue"; let map; onMounted(() => { initMap(); }) function initMap(){ if (typeof AMap === 'undefined') return; map = new AMap.Map('container', { center: [105.796824, 37.98115], // 默认地理中心位置 zoom: 5, }); } </script> <style scoped> #container{ width: 100%; height: calc(100vh); } </style> ``` #### 添加绘图工具栏 最后一步是向地图添加用于绘制多边形或其他图形的控件。这里可以通过调用 `AMap.DrawingManager` 类来进行自定义化处理,允许用户点击按钮后进入画线模式,完成后再退出编辑状态保存所选范围的数据。 ```javascript // 增加此部分代码到上面的 script 标签里 import AMapLoader from "@amap/amap-jsapi-loader"; ... async function enableDrawPolygon() { await AMapLoader.load({ key: "你的key", version: "2.0", plugins: ["AMap.ToolBar", "AMap.Scale", "AMap.OverView", "AMap.MapType"], }) .then((AMap) => { var drawingTool = new AMap.Drawing({map: map}); drawingTool.open(); // 打开绘画板 drawingTool.draw('polygon'); // 开始绘制多边形 }).catch(e=>console.error(e)); } // 将该方法绑定至某个事件触发器上,比如按钮click事件 <button @click="enableDrawPolygon">开始划分区域</button> ``` 以上就是在 Vue3 应用程序中利用高德地图 JavaScript API 实现基本的地图划区分割功能的方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值