腾讯地图绘画多边形和计算面积

在这里插入图片描述


<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>地图</title></head><script src="https://cdn.bootcdn.net/ajax/libs/vue/2.7.4/vue.min.js"></script><scripttype="text/javascript"src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script><scriptcharset="utf-8"type="text/javascript"src="https://map.qq.com/api/gljs?libraries=tools,geometry&v=1.exp&key=OXQ-JNFCT"></script><style type="text/css">html,body {height: 100vh;margin: 0px;padding: 0px;}#my_app {height: 100%;}#container {width: 100%;height: 80%;}#toolControl {position: absolute;top: 10px;left: 0px;right: 0px;margin: auto;width: 252px;z-index: 1001;}.toolItem {width: 30px;height: 30px;float: left;margin: 1px;padding: 4px;border-radius: 3px;background-size: 30px 30px;background-position: 4px 4px;background-repeat: no-repeat;box-shadow: 0 1px 2px 0 #e4e7ef;background-color: #ffffff;border: 1px solid #ffffff;}.toolItem:hover {border-color: #789cff;}.active {border-color: #d5dff2;background-color: #d5dff2;}#marker {background-image: url('https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/marker_editor.png');}#polyline {background-image: url('https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/polyline.png');}#polygon {background-image: url('https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/polygon.png');}#circle {background-image: url('https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/circle.png');}#rectangle {background-image: url('https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/rectangle.png');}#ellipse {background-image: url('https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/ellipse.png');}.next {margin: 50px auto 0 auto;width: 300px;height: 60px;background: red;color: #fff;font-size: 40px;text-align: center;}</style><body><div id="my_app" v-cloak><div id="container"></div><div class="next" @click="nextHandler">下一步</div><div id="toolControl"><divv-for="(item)  in list":key="item.id"class="toolItem":class="{'active': activeId === item.id}":id="item.id":title="item.title"@click="selectItem(item.id)"></div></div></div></body><script>var one = new Vue({el: '#my_app',data: {activeId: 'polygon', // 初始化默认值editor: '',list: [{id: 'marker',title: '点标记',},{id: 'polyline',title: '折线',},{id: 'polygon',title: '多边形',},{id: 'circle',title: '圆形',},{id: 'rectangle',title: '矩形',},{id: 'ellipse',title: '椭圆',},],map: null,locationList: [],},mounted() {this.$nextTick(() => {this.initMap();});},methods: {selectItem(id) {this.activeId = id;this.editor.setActiveOverlay(id);},initMap() {// 初始化地图this.map = new TMap.Map('container', {zoom: 17, // 设置地图缩放级别center: new TMap.LatLng(39.984104, 116.307503), // 设置地图中心点坐标});// 初始化几何图形var marker = new TMap.MultiMarker({map: this.map,});var polyline = new TMap.MultiPolyline({map: this.map,});var polygon = new TMap.MultiPolygon({map: this.map,});var circle = new TMap.MultiCircle({map: this.map,});var rectangle = new TMap.MultiRectangle({map: this.map,});var ellipse = new TMap.MultiEllipse({map: this.map,});this.editor = new TMap.tools.GeometryEditor({// TMap.tools.GeometryEditor 文档地址:https://lbs.qq.com/webApi/javascriptGL/glDoc/glDocEditormap: this.map, // 编辑器绑定的地图对象overlayList: [// 可编辑图层 文档地址:https://lbs.qq.com/webApi/javascriptGL/glDoc/glDocEditor#4{overlay: marker,id: 'marker',},{overlay: polyline,id: 'polyline',},{overlay: polygon,id: 'polygon',},{overlay: circle,id: 'circle',},{overlay: rectangle,id: 'rectangle',},{overlay: ellipse,id: 'ellipse',},],actionMode: TMap.tools.constants.EDITOR_ACTION.DRAW, // 编辑器的工作模式activeOverlayId: this.activeId, // 激活图层snappable: true, // 开启吸附});// 监听绘制结束事件,获取绘制几何图形this.editor.on('draw_complete', (geometry) => {console.log('所有顶点坐标集合', geometry); // 每种图形返回值不一样,需要特殊处理this.locationList.push({ ...geometry, type: this.activeId });// 多边形处理if (this.activeId === 'polygon') {this.computeArea(geometry.paths, this.locationList.length - 1);}//... 其他类型的形状 面积 自行处理});},// 计算路径围成的多边形的面积computeArea(path, index) {const area = TMap.geometry.computeArea(path);this.locationList[index].area = area;},nextHandler() {wx.miniProgram.getEnv(function (res) {console.log(res.miniprogram); // trueif (res.miniprogram) {wx.miniProgram.navigateTo({url: `/pages/test/test?lcation=${JSON.stringify(this.locationList)}`,});}});},},});</script>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/228657.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WorkPlus即时通讯app-私有化部署的最佳解决方案

随着数字化时代的到来&#xff0c;企业在业务发展和沟通协作方面面临着前所未有的挑战。传统的通讯工具无法满足安全、高效、全面掌控业务和生态的需求。而在这个背景下&#xff0c;WorkPlus作为安全专属的移动数字化平台崭露头角&#xff0c;成为企业实现全面业务掌控的最佳选…

Python之初识类与对象

类的概念与定义 在生活中&#xff0c;我们走在路边&#xff0c;看到一辆车&#xff0c;大脑中首先想到的是“这是一辆车&#xff0c;然后才是这是一辆什么牌子的车”&#xff0c;在这里&#xff0c;我们就用到了编程中的类的概念。同样的&#xff0c;看到一条小狗&#xff0c;…

Linux:进程地址空间

目录 1.程序地址空间 2.进程地址空间 1.程序地址空间 我们在讲C/C语言的时候&#xff0c;32位平台下&#xff0c;我们见过这样的空间布局图 我们来验证一下这张图的正确性&#xff1a; int un_gval;int init_gval100;int main(int argc, char* argv[],char* env[]){//代码…

网络安全事件分级指南

文章目录 一、特别重大网络安全事件符合下列情形之一的&#xff0c;为特别重大网络安全事件&#xff1a;通常情况下&#xff0c;满足下列条件之一的&#xff0c;可判别为特别重大网络安全事件&#xff1a; 二、重大网络安全事件符合下列情形之一且未达到特别重大网络安全事件的…

前端实现一个时间区间内,再次单选功能,使用Antd组件库内日历组件Calendar

需求&#xff1a;需要先让用户选择一个时间区间&#xff0c;然后再这个时间区间中&#xff0c;让用户再次去单选其种特殊日期。 思路&#xff1a; 1.先用Antd组件库中日期选择DatePicker.RangePicker实现让用户选择时间区间 2.在选择完时间区间后&#xff0c;用这个时间区间…

从零开始 --- 创建vue项目

1、Vue脚手架创建项目 vue create home_vue 我选择了vue3 2、引入element-plus npm i element-plus vue2 对应 npm i element-ui main.js中 import { createApp } from vue import App from ./App.vue import ElementPlus from element-plus import element-plus/theme-…

Spring框架知识总结

目录 1、Spring框架有哪些设计模式&#xff1f; 2、介绍一下Spring框架和SpringBoot框架&#xff1f; 3、介绍一下SpringBoot具有哪些功能模块&#xff1f; 4、Spring用到了什么组件&#xff1f; 5、什么是IoC? 什么是AOP&#xff1f; 6、SpringBoot运行原理&#xff1…

鸿蒙HarmonyOS开发用什么语言

1.网上流行一句有中国底蕴的话&#xff1a;鸿蒙系统方舟框架盘古大模型。都方舟框架了肯定主推的是ArkUI框架。其实还能使用C、Java和Js开发。 2.从API8开始&#xff0c;Java语言已经从鸿蒙开发剔除了&#xff0c;而官方推荐的是ArkTs.下图是ArkTS与TS、JS的关系。 ArkTs 是TS的…

BFS:八数码问题求解

八数码原题 剖析一下BFS BFS算法是一种图遍历算法&#xff0c;它从起点开始&#xff0c;逐层扩展搜索范围&#xff0c;直到找到目标节点为止。 BFS算法一般选择队列作为节点存储的数据结构&#xff0c;我们将搜索目标节点的问题抽象为寻找目标状态&#xff0c;那么队列…

Vue3 reative回显问题

1. reactive 在做项目的时候通常会遇到这种情况&#xff0c;比如我们有一个 Table 显示数据&#xff0c;添加 Table 数据的时候使用 dialog 弹出&#xff0c;在里面填写字段然后添加。 在 vue3 中&#xff0c;对于对象的响应式定义推荐使用 reactive &#xff0c;那么可以写入…

运筹学经典问题(二):最短路问题

问题描述 给定一个图&#xff08;有向图或无向图&#xff09; G ( V , E ) G (V, E) G(V,E)&#xff0c; V V V是图中点的集合&#xff0c; E E E是图中边的集合&#xff0c;图中每条边 ( i , j ) ∈ E (i, j) \in E (i,j)∈E都对应一个权重 c i j c_{ij} cij​&#xff08;…

Android取消深色适配

从Android10&#xff08;API 29&#xff09;开始&#xff0c;在原有的主题适配的基础上&#xff0c;Google开始提供了Force Dark机制&#xff0c;在系统底层直接对颜色和图片进行转换处理&#xff0c;原生支持深色模式。当系统设置深色主题背景或者进入省电模式情况下会进入深色…

2023年烟花爆竹经营单位主要负责人证模拟考试题库及烟花爆竹经营单位主要负责人理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年烟花爆竹经营单位主要负责人证模拟考试题库及烟花爆竹经营单位主要负责人理论考试试题是由安全生产模拟考试一点通提供&#xff0c;烟花爆竹经营单位主要负责人证模拟考试题库是根据烟花爆竹经营单位主要负责人…

RGB颜色表示法(RGBA解释) 以及常见的色调

RGB&#xff1a;代表red&#xff0c;green&#xff0c;blue。即用这三个色调表示所有颜色。 表示方式如&#xff1a;&#xff08;255,255,255&#xff09;白色、&#xff08;0,0,0&#xff09;黑色 改变三个不同的数值可以得到不同的颜色&#xff0c;数值取值范围为0-255&#…

设计模式——模板方法模式

引言 模板方法模式是一种行为设计模式&#xff0c; 它在超类中定义了一个算法的框架&#xff0c; 允许子类在不修改结构的情况下重写算法的特定步骤。 问题 假如你正在开发一款分析公司文档的数据挖掘程序。 用户需要向程序输入各种格式 &#xff08;PDF、 DOC 或 CSV&#…

Ubuntu 常用命令之 cp 命令用法介绍

cp命令在Ubuntu系统中用于复制文件或目录。它的基本格式是cp [选项] 源文件或目录 目标文件或目录。 以下是一些常用的cp命令选项 -i&#xff1a;在覆盖目标文件之前将给出提示。-r或-R&#xff1a;递归复制&#xff0c;用于目录的复制操作。-v&#xff1a;详细模式&#xff…

2023-12-12 AIGC-AI工具的基本工作原理

摘要: 2023-12-12 AIGC-AI工具的基本工作原理 AI工具的基本工作原理 AI工具的基本工作原理涉及到一系列复杂的技术和算法。这些原理可以根据不同类型的AI工具进行概括&#xff0c;包括机器学习、自然语言处理、图像识别等。以下是一些关键的AI工具及其工作原理的概述&#xff…

对于实例控制,枚举类型优先于readResolve

实例控制是指控制类实例的创建和使用过程&#xff0c;而 readResolve 方法是 Serializable 接口中的一个特殊方法&#xff0c;用于在反序列化时控制对象的实例。在一些情况下&#xff0c;使用枚举类型可以更优雅地实现实例控制&#xff0c;而不需要依赖 readResolve 方法。 下…

网络基础(十二):ACL与NAT

目录 一、ACL 1、ACL的概述 2、ACL的分类 3、ACL的应用 4、ACL的组成和基本原理 ​编辑 5、ACL的配置 5.1配置基本ACL 5.2配置高级ACL 二、NAT 1、NAT的概述 2、NAT的分类 3、NAT的工作原理 4、静态NAT的配置 5、动态NAT的配置 6、NAPT&#xff08;端口映射&am…

查询某个类是在哪个JAR的什么版本开始出现的方法

背景 我们在依赖第三方JAR时&#xff0c;同时也会间接的依赖第三方JAR引用的依赖&#xff0c;而当我们项目中某个依赖的版本与第三方JAR依赖的版本不一致时&#xff0c;可能会导致第三方JAR的在运行时无法找到某些方法或类&#xff0c;从而无法正常使用。 如我正在开发的一个…