vue+百度地图实现海量点

用海量点来展示多个坐标,实测2万个坐标点显示出来只有两三秒的延迟

代码示例

1.在显示地图的组件中 template 中(必须设置组件高跟宽):

<el-card id="allmap"  style="width:66.2%;height:2.5rem;margin-top: 0.1rem;" ></el-card>

2.在script

export default {
		name: "home",
	  	data() {
		    return {
		     };
		    	
	  	},
	  	mounted(){
			this.$nextTick(() => {
			 this.BaiduMap()
			})
			
	  	},
	  	methods:{
	  	//加载地图
        	BaiduMap() {
			    var that = this;
			      // 百度地图API功能
			    var map = new BMap.Map("allmap",{enableMapClick:true,minZoom:4});
			    var point=new BMap.Point(101.74,36.56)
			    map.disableDoubleClickZoom() 
			    map.centerAndZoom(point,5);    //中心点
				map.enableScrollWheelZoom();   //启用滚轮放大缩小,默认禁用
				map.enableContinuousZoom();//可拖拽
				var pointt=new BMap.Point(this.qidian.lng,this.qidian.lat)
				var markerMap = new BMap.Marker(pointt);//标注中心点
			    map.addOverlay(markerMap);

			    // 定义一个控件类,即function
			    //在左上角加入地图的标题
				function ZoomControl(){
				  // 默认停靠位置和偏移量
				  this.defaultAnchor = BMAP_ANCHOR_TOP_LEFT;
				  this.defaultOffset = new BMap.Size(15, 15);
				}
				// 通过JavaScript的prototype属性继承于BMap.Control
				ZoomControl.prototype = new BMap.Control();
				ZoomControl.prototype.initialize = function(map){
				  // 创建一个DOM元素
				  var div = document.createElement("div");
					var lents=that.shuju.length
				  	$(div).html(`<div style='padding:5px 0px;font-size:0.11rem;font-weight:700'>客户分布图</div>`);
				  map.getContainer().appendChild(div);
				  // 将DOM元素返回
				  return div;
				}
				// 创建控件
				var myZoomCtrl = new ZoomControl();
				// 添加到地图当中
				map.addControl(myZoomCtrl);



			    var opts = {
				  width : 200,     // 信息窗口宽度
				  borderRadius:20,
				  height:30
				}
				var infoWindow = new BMap.InfoWindow("公司所在地:"+this.qidian.name, opts);  // 创建信息窗口对象 
				markerMap.addEventListener("click", function(){          
					map.openInfoWindow(infoWindow,pointt); //开启信息窗口
				});
				this.$nextTick(() => {
				var points=[]
				//将点添加到数组中
				for(var i=0;i<that.shuju.length;i++){
					points.push(new BMap.Point(that.shuju[i].lng,that.shuju[i].lat))
				}
//				var markerClusterer = new BMapLib.MarkerClusterer(map, {markers:points});
				var options = {
		            size: BMAP_POINT_SIZE_SMALL,
		            shape: BMAP_POINT_SHAPE_STAR,
		            color: '#d340c3'
		        }
        		var pointCollection = new BMap.PointCollection(points, options);  // 初始化	PointCollection
        		//添加到地图上
        		map.addOverlay(pointCollection)
        		
				//增加标注的点击事件,弹出点的信息
        		pointCollection.addEventListener('click', dituw);
				})
     			function dituw(e) {
        
        			var Name="";//名称
	          		for (var i = 0; i < that.shuju.length; i++) {
	
						if(that.shuju[i].lng==e.point.lng&&that.shuju[i].lat==e.point.lat){//经度==点击的,维度
							Name=that.shuju[i].name;
							ads=that.shuju[i].username;
							tel=that.shuju[i].userphone;
							break;
						}
					}
			          var point = new BMap.Point(e.point.lng, e.point.lat);
			          var opts = {
							width: 280, // 信息窗口宽度
							height: 30, // 信息窗口高度
							title:"", // 信息窗口标题
							enableMessage: false,//设置允许信息窗发送短息
							}
							var infowindow = new BMap.InfoWindow("客户名称:"+Name);
							map.openInfoWindow(infowindow, point);
									
			        }
			
						 
        	},
	  	}

备注

信息弹窗展示的信息越多,地图加载的越慢。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用百度地图 JavaScript API 来实现Vue 中进行定位。首先,你需要在你的 Vue 项目中引入百度地图 JavaScript API 的 SDK。 1. 在你的 HTML 文件中添加以下代码来引入百度地图的 SDK: ```html <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=YOUR_API_KEY"></script> ``` 请将 `YOUR_API_KEY` 替换为你自己申请的百度地图的 API 密钥。 2. 在你的 Vue 组件中,你可以使用 `mounted` 钩子函数来初始化地图和定位: ```javascript mounted() { // 创建地图实例 const map = new BMap.Map("map-container"); // 创建定位控件实例 const geolocation = new BMap.Geolocation(); // 获取位置信息 geolocation.getCurrentPosition((result) => { if (geolocation.getStatus() === BMAP_STATUS_SUCCESS) { // 定位成功,获取经纬度信息 const { point } = result; // 在地图上显示定位结果 map.centerAndZoom(point, 15); map.addOverlay(new BMap.Marker(point)); } else { // 定位失败 console.log("定位失败:" + geolocation.getStatus()); } }); }, ``` 在上面的代码中,我们通过 `BMap.Map` 创建了一个地图实例,并通过 `BMap.Geolocation` 创建了一个定位控件实例。然后,使用 `geolocation.getCurrentPosition` 方法获取位置信息,并根据定位结果在地图上进行展示。 3. 在你的 Vue 模板中,添加包含地图的容器: ```html <template> <div id="map-container"></div> </template> ``` 通过以上步骤,你就可以在 Vue 中使用百度地图进行定位了。记得替换 `YOUR_API_KEY` 为你自己的百度地图 API 密钥,并根据需要调整地图的样式和定位的精度等参数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值