1. 程式人生 > >百度地圖商家標註,查詢附近3000米內的商家並標到地圖上

百度地圖商家標註,查詢附近3000米內的商家並標到地圖上

效果圖


<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=KEY"></script>
<script type="text/javascript">  	
	// 百度地圖API功能	
	map = new BMap.Map("allmap");
	map.centerAndZoom(new BMap.Point(116.417854,39.921988), 15);	
	//向地圖新增縮放控制元件
    function addMapControl(){
      var scaleControl = new BMap.ScaleControl({anchor:BMAP_ANCHOR_BOTTOM_LEFT});
      scaleControl.setUnit(BMAP_UNIT_IMPERIAL);
      map.addControl(scaleControl);
      var navControl = new BMap.NavigationControl({anchor:BMAP_ANCHOR_TOP_LEFT,type:BMAP_NAVIGATION_CONTROL_LARGE});
      map.addControl(navControl);
      var overviewControl = new BMap.OverviewMapControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT,isOpen:true});
      map.addControl(overviewControl);
    }
	addMapControl();	
	//訪問時根據城市IP自動定位
	function myFun(result){
		var cityName = result.name;		
		map.centerAndZoom(cityName,10);
		$("#curposition").text(cityName); 		
	}
	var myCity = new BMap.LocalCity();
	myCity.get(myFun);	
	// 點選省獲取城市下拉框並設定地圖地圖中心點為當前省份中心點
	$("#provice").change(function(){		
		var provice_name = $(this).val().split('|');
		map.centerAndZoom(provice_name[1],10);
		var url = "<?php echo SHOP_SITE_URL;?>/index.php?act=index&op=get_area&id="+provice_name[0];
		$("#city").empty();
		$("#city").append('<option value="">請選擇城市</option>');
		$.getJSON(url,function(result){	 	
		   $.each(result,function(n,e){
			   $("#city").append('<option value="'+e.area_id+'|'+e.area_name+'">'+e.area_name+'</option>');
		   });	   
		});	
	})	
	// 點選城市獲取區域下拉框並設定地圖地圖中心點為當前城市中心點
	$("#city").change(function(){		
		var city_name = $(this).val().split('|');
		map.centerAndZoom(city_name[1],15);
		var url = "<?php echo SHOP_SITE_URL;?>/index.php?act=index&op=get_area&id="+city_name[0];
		$("#area").empty();
		$("#area").append('<option value="">請選擇區域</option>');
		$.getJSON(url,function(result){	 	
		   $.each(result,function(n,e){
			   $("#area").append('<option value="'+e.area_id+'|'+e.area_name+'">'+e.area_name+'</option>');
		   });	   
		});		
	})	
	//根據區域設定地圖中心
	$("#area").change(function(){		
		var city_name = $("#city").val().split('|')[1];
		var area_name = $(this).val().split('|')[1];		
		areaSetMap(city_name,city_name+area_name,13);		
	})	
	//單擊地區時呼叫此方法
	function areaSetMap(city,address,grade){	
	  var myGeo = new BMap.Geocoder();	
	  var latlng;
	  myGeo.getPoint(address, function(point){		 
		  if (point) {		     	
			  map.centerAndZoom(point,grade);			 	  		 
		  }else{
			  alert("您選擇地址沒有解析到結果!");
		  }
	  },city);	  
	}	
	//單擊搜尋時呼叫此方法
	function addressSetMap(city,address,grade){	
	  var myGeo = new BMap.Geocoder();	
	  var latlng;
	  myGeo.getPoint(address, function(point){		 
		  if (point) {			       	
			  map.centerAndZoom(point,grade);	
			  var latlng = point.lng+','+point.lat;
			  getStoreList(latlng);		  		 
		  }else{
			  alert("您選擇地址沒有解析到結果!");
		  }
	  },city);	  
	}
	//單擊搜尋	
	$("#map_search").click(function(){		  
		var area=$("#area").val();
		var key = $("#keywords").val();
		var city_name = $("#city").val().split('|')[1];
		var area_name = $("#area").val().split('|')[1];	
		if(area==""){ alert("請選擇地區");return; }
		if(key==""){ alert("請輸入搜尋詳細地址");return; }
		var address = city_name+area_name+key;
		addressSetMap(city_name,address,18);		
	})
	
	function point(){
		//建立小狐狸
	  var pt = new BMap.Point(116.417, 39.909);
	  var myIcon = new BMap.Icon("<?php echo SHOP_TEMPLATES_URL;?>/images/point.png", new BMap.Size(300,157));
	  var marker2 = new BMap.Marker(pt,{icon:myIcon});  // 建立標註
	  map.addOverlay(marker2);              // 將標註新增到地圖中
	}
	//搜尋獲取店鋪列表		
	function getStoreList(latlng){	  	
	  $(".maploading").show();	
	  var i=0;  //設定圖示位置
	  var opts = {width : 250,height: 80,enableMessage:true};		
	  var url = "<?php echo SHOP_SITE_URL;?>/index.php?act=index&op=getStore_list&latlng="+latlng;
	  $.getJSON(url,function(result){				
		 $.each(result,function(n,e){
			 if(n>0){
			 	i = -n*27;
			 }		
		     map.removeOverlay(); //清空地圖示			
			 var pt = new BMap.Point(e.store_lat,e.store_lng);
			 var myIcon = new BMap.Icon("<?php echo SHOP_TEMPLATES_URL;?>/images/point.png", new BMap.Size(27,38),{
			 	 anchor: new BMap.Size(13,0),
				 imageOffset: new BMap.Size(i,0) // 設定圖片偏移				 
			 });
	  		 var marker = new BMap.Marker(pt,{icon:myIcon});  // 建立標註				
	  		 map.addOverlay(marker);			 
			 //建立資訊視窗        
		var html="<dl class=mapstorelist><dt><a href='"+e.url+"' target=_blank><img src='"+e.img+"' width=120 height=100></a><dt>";
		html+="<dd><b>"+e.store_name+"</b><p>"+e.area_info+"</p><p>"+e.store_address+"</p><a href='"+e.url+"' class=enterstore target=_blank>進入店鋪</a></dd></dl>";			 
        	 var infoWindow = new BMap.InfoWindow(html);	
			 marker.addEventListener("click", function () { 
			 	map.centerAndZoom(e.lat+','+e.lng,18);
				this.openInfoWindow(infoWindow);
			 });	 
		 });
		$(".maploading").hide(); 	   
	  });
	}		
</script>這是JS ,其它部分原始碼需要的朋友可聯絡
<div class="bai_Map">
<h2>您現在的位置<span id="curposition"></span></h2>
<div id="allmap" style="width:1198px; height:560px; border:1px solid #03ada4;"></div>
<div class="map_search">
<form action="">
<select name="" id="provice">
<option value="">請選擇省份</option>
</select>
<select name="" id="city">
<option value="">請選擇城市</option>
</select>
<select name="" id="area">
<option value="">請選擇地區</option>
</select>
<input type="text" id="keywords" class="map_text" placeholder="請輸入搜尋的詳細地址" />
<input type="button" class="map_btn" id="map_search" value="搜 索" />
</form>
</div>
<div class="maploading">
<div class="spinner">
  <div class="dot1"></div>
  <div class="dot2"></div>
</div>
</div>
</div>
CSS
/* CSS Document */
.bai_Map { width: 1200px; height: 600px; margin: 0 auto; margin-top: 15px; overflow: hidden; position: relative; }
.bai_Map h2 { height: 35px; text-align: center; color: #FFF; font-size: 18px; font-weight: normal; line-height: 35px; background: #03ada4; }
.map_search { position: absolute; left: 100px; top: 50px; z-index: 1000; }
.map_search input { border: 1px solid #dfdfdf; padding: 6px 10px; float: left; font-size: 14px; color: #666; font-family: 'Microsoft Yahei'; box-shadow: #dfdfdf 0 0 4px; }
.map_search select { height: 35px; min-width: 140px; float: left; margin-right: 5px; font-size: 14px; border: 1px solid #dfdfdf; color: #666; box-shadow: #dfdfdf 0 0 4px; font-family: 'Microsoft Yahei' }
.map_search .map_text { padding: 3px 10px; border: 1px solid #dfdfdf; height: 27px; width: 250px; }
.map_search .map_btn { background: url(../images/mapsbtn.png) no-repeat; color: #FFF; border: 0px; font-size: 16px; border-radius: 3px; width: 70px; height: 35px; margin-left: 5px; cursor: pointer; }
.mapstorelist { border-radius: 5px; }
.mapstorelist dt { float: left; margin-right: 10px; }
.enterstore { padding: 5px 10px; background: url(../images/mapsbtn.png) no-repeat; color: #FFF; font-size: 14px; display: inline-block; margin-top: 10px; }
.enterstore:hover { color: #FFF; }
.maploading { display:none; width: 100%; height: 100%; background:url(../images/tm25.png); position: absolute; left: 0px; top:35px; }
.maploading .spinner { margin: 250px auto; width: 90px; height: 90px; position: relative; text-align: center; -webkit-animation: rotate 2.0s infinite linear; animation: rotate 2.0s infinite linear; }
.maploading .dot1, .dot2 { width: 60%; height: 60%; display: inline-block; position: absolute; top: 0; background-color: #e71e80; border-radius: 100%; -webkit-animation: bounce 2.0s infinite ease-in-out; animation: bounce 2.0s infinite ease-in-out; }
.maploading .dot2 { top: auto; bottom: 0px; -webkit-animation-delay: -1.0s; animation-delay: -1.0s; }
 @-webkit-keyframes rotate { 100% {
-webkit-transform: rotate(360deg)
}
}
@keyframes rotate { 100% {
transform: rotate(360deg);
-webkit-transform: rotate(360deg)
}
}
 @-webkit-keyframes bounce {  0%, 100% {
-webkit-transform: scale(0.0)
}
 50% {
-webkit-transform: scale(1.0)
}
}
 @keyframes bounce {  0%, 100% {
 transform: scale(0.0);
 -webkit-transform: scale(0.0);
}
50% {
 transform: scale(1.0);
 -webkit-transform: scale(1.0);
}
}