高德地图点击弹窗异步加载

想实现的效果是加载点,每个点对应一定的信息,点击marker弹窗显示对应的信息

$.ajax( {
	        type : "post",
	        url : "simple.do?action=multiquery",
	        data:{
	        	'flag':$(":radio[name='rd']:checked").val(),
	            'province': provinceValue,
	            'city' : city,
	            'scene':scene,
	            'month':month,
	        },
	      	error:function () {
	           alert('服务器请求失败,请重新请求')
	        }, 
	        success : function(data){
	            var dt = JSON.parse(data.resultData);	

	            if(dt.length>0){
	            	var markers = [];
		            var infoWindow = new AMap.InfoWindow();
		            for(var i=0;i<dt.length;i++){
		            	 var marker = new AMap.Marker({
		            		 icon : 'resource/img/red.png',//24px*24px
		                     position: [dt[i].LNG, dt[i].LAT],
		                     offset : new AMap.Pixel(-5,-20),
		                     map:map
		                 });
		            	 marker.content='省份:'+dt[i].PN+'  城市:'+dt[i].CN
		            	 +'<br>RRC连接平均数:'+dt[i].RRC+'<br>下行PRB平均利用率:'+dt[i].PRB
		            	 +'<br>空口下行业务流量:'+dt[i].EP+'<br>时间:'+dt[i].TS
		            	 +'<br>场景:'+dt[i].VN;
	            	    //给Marker绑定单击事件
	            	    marker.on('click',  function(e){
	            		    infoWindow.setContent(e.target.content);
	            		    infoWindow.open(map, e.target.getPosition());
	            		});
	            	    markers.push(marker);
		            }
		            map.setFitView();	
	            }else{
	            	alert('未查询到相关数据');
	            }

	        }
	        
 });
但是因为是一次性查询出了所有点要展示的所有信息,当量大的时候肯定加载速度是不够友好的,并且正常逻辑肯定是:当点击点时触发ajax查询再加载基本信息

优化后的代码:

$.ajax( {
	        type : "post",
	        url : "simple.do?action=multiquery",
	        data:{
	            'province': provinceValue,
	            'city' : city,
	            'scene':scene,
	            'month':month,
	        },
	      	error:function () {
	           alert('服务器请求失败,请重新请求')
	        }, 
	        success : function(data){
	            var dt = JSON.parse(data.resultData);	

	            if(dt.length>0){
	            	var markers = [];
		            var infoWindow = new AMap.InfoWindow();
		            for(var i=0;i<dt.length;i++){
		            	 var marker = new AMap.Marker({
		            	     icon : 'resource/img/red.png',//24px*24px
		                     position: [dt[i].LNG, dt[i].LAT],
		                     offset : new AMap.Pixel(-6,-22),
		                     map:map
		                 });
		            	
		            	marker.content= dt[i].CID;
		            	marker.on('click',mclick);	            
	            	    	markers.push(marker);
		            }
		            map.setFitView();	
	            }else{
	            	alert('未查询到相关数据');
	            }

	        }
	        
 });
对应的异步加载js:

	function mclick(e){
		var month=$('#month').val();
		$.ajax( {
	        type : "post",
	        url : "simple.do?action=getNoSceneInfoByCid",
	        data:{
	            'cid': e.target.content,  
	            'month':month
	        },
	      	error:function () {
	           alert('服务器请求失败,请重新请求')
	        }, 
	        success : function(data){
	            var dt = JSON.parse(data.resultData);	
	            if(dt.length>0){	          
		            var infoWindow = new AMap.InfoWindow();
		            var info='RRC连接平均数:'+dt[0].RRC+'<br>下行PRB平均利用率:'+dt[0].PRB
	            	 +'%<br>空口下行业务流量:'+dt[0].EP; 
		            infoWindow.setContent(info);
        		    infoWindow.open(map, e.target.getPosition());
	            }else{
	            	alert('未查询该小区对应的扩容信息');
	            }
	        }	        
	    });
	}
后记:虽然实现效果前后是一致的,但是异步加载后页面加载速度肯定有提升的



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟茜

随多随少随你心意^-^

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值