当前位置: 首页 > news >正文

使用腾讯地图,在地图上圈选标记半径范围

1、引入地图:

<!-- 引入腾讯地图 -->
<script charset="utf-8" src="https://map.qq.com/api/gljs?v=1.exp&key=YOUR_KEY&libraries=visualization,service"></script>

2、具体实现如下:

export default {data() {return {map: '', //mapmarker: null, //地图标记circle: null, //地图范围的圆   }},methods: {init() { //初始化地图this.$nextTick(()=> {this.map = new TMap.Map("container", {center: new TMap.LatLng(39.984121, 116.307484), // 设置地图中心点zoom: 10, // 设置地图缩放级别});})},setMarker(lat,lng){ //地图标记if(this.marker){this.marker.setMap(null);}this.marker = new TMap.MultiMarker({map: this.map,styles: {marker: new TMap.MarkerStyle({"width": 35,"height": 35,"anchor": { x: 16, y: 32 },"src": "https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/markerNew.png"})},geometries: [{id: "marker",position: new TMap.LatLng(lat, lng),styleId: "marker"}]});this.map.setCenter(new TMap.LatLng(lat, lng));},//半径输入intChange(e) {e.target.value = e.target.value? e.target.value.replace(/[^0-9]\d*/g, '') : '';if(e.target.value){this.search()}},search() { //实时获取地里位置标记地图var that = this;	if(this.longitude && this.latitude){this.setMarker(this.latitude,this.longitude) //地图标记if(this.distance){  //根据半径圈选范围let distance = Number(this.distance)if (!Number.isFinite(distance)) {return}if(this.circle){this.circle.setMap(null);}this.circle = new TMap.MultiCircle({map: that.map,geometries: [{center: new TMap.LatLng(that.latitude, that.longitude), // 圆心坐标radius: distance, // 圆的半径,单位为米color: '#FF0000', // 圆的填充颜色borderColor: '#FF0000', // 圆的边框颜色borderWidth: 2, // 边框宽度borderOpacity: 0.8, // 边框透明度colorOpacity: 0.2 // 填充透明度}]});let zoom=that.getZoom(that.distance)this.map.setCenter(new TMap.LatLng(this.latitude, this.longitude));this.map.setZoom(zoom);}}},/*根据距离获取地图放大缩小的倍数*/getZoom(distance){let zoom=3;if(distance<1100000){zoom=4;}if(distance<600000){zoom=5;}if(distance<300000){zoom=6;}if(distance<100000){zoom=7;}if(distance<50000){zoom=8;}if(distance<20000){zoom=10;}if(distance<9000){zoom=11;}if(distance<5000){zoom=12;}if(distance<2000){zoom=13;}if(distance<1000){zoom=14;}if(distance<500){zoom=15;}if(distance<200){zoom=16;}if(distance<100){zoom=17;}if(distance<50){zoom=18;}return zoom},},mounted() {this.$nextTick(() => {this.init();})}
}

相关文章:

  • 预防工作场所的违规政策
  • Vue 技术入门 day1 模版语法、数据绑定、事件处理、计算属性与监视、class和style绑定、条件渲染v-if/v-show、列表渲染v-for
  • 回归预测合集|基于灰狼优化21个机器学习和深度学习的数据回归预测Matlab程序 多特征输入单输出
  • 召回06 双塔模型two-tower(DSSM)
  • 【中间件——基于消息中间件的分布式系统的架构】
  • Facebook公共主页bug问题解决措施清单
  • ArcEngine C#二次开发图层处理:根据属性分割图层(Split)
  • 【华为HCIP实战课程一】OSPF相关基础介绍及基础配置,网络工程师必修
  • 【数据库】sqlite
  • Qt 每日面试题 -3
  • 前端基础知识汇总(一)
  • ubuntu20.04编译安装opencv-4.9.0的cuda版本
  • 力扣(leetcode)每日一题 2516 每种字符至少取 K 个 | 滑动窗口
  • 【项目经验分享】深度学习自然语言处理技术毕业设计项目案例定制
  • 学生信息管理系统开发实战:掌握多数据模型关联关系的设计和使用
  • [数据结构]链表的实现在PHP中
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Bytom交易说明(账户管理模式)
  • Java深入 - 深入理解Java集合
  • react-native 安卓真机环境搭建
  • tweak 支持第三方库
  • win10下安装mysql5.7
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 电商搜索引擎的架构设计和性能优化
  • 复杂数据处理
  • 坑!为什么View.startAnimation不起作用?
  • 前端_面试
  • 事件委托的小应用
  • 手机端车牌号码键盘的vue组件
  • 我的zsh配置, 2019最新方案
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • No resource identifier found for attribute,RxJava之zip操作符
  • zabbix3.2监控linux磁盘IO
  • 仓管云——企业云erp功能有哪些?
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (2.2w字)前端单元测试之Jest详解篇
  • (3)选择元素——(17)练习(Exercises)
  • (web自动化测试+python)1
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (含答案)C++笔试题你可以答对多少?
  • (面试必看!)锁策略
  • (三)SvelteKit教程:layout 文件
  • (一)WLAN定义和基本架构转
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • .naturalWidth 和naturalHeight属性,
  • .Net Core 中间件验签
  • .Net Remoting(分离服务程序实现) - Part.3