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

1、引入地图:

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

2、具体实现如下:

javascript 复制代码
export default {
    data() {
		return {
            map: '', //map
            marker: 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();
		})
    }
}
相关推荐
wayhome在哪4 分钟前
用 fabric.js 搞定电子签名拖拽合成图片
javascript·产品·canvas
JayceM1 小时前
Vue中v-show与v-if的区别
前端·javascript·vue.js
HWL56791 小时前
“preinstall“: “npx only-allow pnpm“
运维·服务器·前端·javascript·vue.js
咪咪渝粮1 小时前
JavaScript 中constructor 属性的指向异常问题
开发语言·javascript
德育处主任2 小时前
p5.js 掌握圆锥体 cone
前端·数据可视化·canvas
mazhenxiao2 小时前
qiankunjs 微前端框架笔记
前端
无羡仙2 小时前
事件流与事件委托:用冒泡机制优化前端性能
前端·javascript
秃头小傻蛋2 小时前
Vue 项目中条件加载组件导致 CSS 样式丢失问题解决方案
前端·vue.js
CodeTransfer2 小时前
今天给大家搬运的是利用发布-订阅模式对代码进行解耦
前端·javascript
阿邱吖2 小时前
form.item接管受控组件
前端