百度地图,根据地图上任意一点的经纬度获取周边最近的POI位置信息
2015-04-17 10:31
561 查看
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>根据地图上任意一点的经纬度获取周边最近的POI位置信息</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=FB14a133b9bf40fec90d36c84fb4dd13"></script>
<script type="text/javascript" src="http://api.map.baidu.com/library/DistanceTool/1.2/src/DistanceTool_min.js"></script>
</head>
<body>
<input type="button" onclick="getPOI();" value="确定" />
<div style="width:600px;height:340px;border:1px solid gray;" id="container"></div>
<div style="width:300px;height:340px;border:1px solid gray;border-left:0;" id="panel"></div>
</body>
</html>
<script type="text/javascript">
//启用滚轮缩放
var map= new BMap.Map("container");
var mPoint= new BMap.Point(104.0831760000, 30.6608250000);
map.centerAndZoom(mPoint, 16);
function getPOI(){
var ss=displayPOI(104.0831760000, 30.6608250000,1000);//根据需要自己传经纬度
}
var myGeo = new BMap.Geocoder();
function displayPOI(lng,lat,r){//参数:经lat、纬度lng、半径r
var mOption = {
poiRadius : r, //半径为r米内的POI,
numPois : 50 //最多只有12个 系统决定的
}
var ponits_=[];//经纬度和地址信息
myGeo.getLocation(mPoint,
function mCallback(rs){
var allPois = rs.surroundingPois; //获取全部POI(半径R的范围 最多12个点)
if(allPois==null || allPois==""){
return;
}
var disMile=[];//储存周围的点和指定点的距离
for(i=0;i<allPois.length;i++){//计算得到的POI坐标和指定坐标的距离
var pointA=new BMap.Point(allPois[i].point.lng,allPois[i].point.lat);
disMile.push({'lng':allPois[i].point.lng,'lat':allPois[i].point.lat,'distance':map.getDistance(pointA, mPoint)}) ;
}
var result=arrBubble(disMile);//disMile进行升序排列后的数组
console.log(allPois);
if(result!=null){
if(result.length>=3){//获取最多3个点 可以自己设定 但是最多就12个点
var k1=0;//去掉重复
var k2=0;
var k3=0;
for(var i=0;i<allPois.length;i++){
if(result[0].lng==allPois[i].point.lng && result[0].lat==allPois[i].point.lat && k1==0){
ponits_.push({'lng':result[0].lng,'lat':result[0].lat,'address':allPois[i].title});
k1++;
}else if(result[1].lng==allPois[i].point.lng && result[1].lat==allPois[i].point.lat && k2==0){
ponits_.push({'lng':result[1].lng,'lat':result[1].lat,'address':allPois[i].title});
k2++;
}else if(result[2].lng==allPois[i].point.lng && result[2].lat==allPois[i].point.lat && k3==0){
ponits_.push({'lng':result[2].lng,'lat':result[2].lat,'address':allPois[i].title});
k3++;
}
}
}else if(result.length==2){
var k1=0;
var k2=0;
for(var i=0;i<allPois.length;i++){
if(result[0].lng==allPois[i].point.lng && result[0].lat==allPois[i].point.lat && k1==0){
ponits_.push({'lng':result[0].lng,'lat':result[0].lat,'address':allPois[i].title});
k1++;
}else if(result[1].lng==allPois[i].point.lng && result[1].lat==allPois[i].point.lat && k2==0){
ponits_.push({'lng':result[1].lng,'lat':result[1].lat,'address':allPois[i].title});
k2++;
}
}
}else if(result.length==1){
var k1=0;
for(var i=0;i<allPois.length;i++){
if(result[0].lng==allPois[i].point.lng && result[0].lat==allPois[i].point.lat && k1==0){
ponits_.push({'lng':result[0].lng,'lat':result[0].lat,'address':allPois[i].title});
k1++;
}
}
}
}
console.log(ponits_);
if(ponits_!=null){//这里的points_包含了所需的经纬度和地址信息 具体操作自己设置
for(var i=0;i<ponits_.length;i++){
var pt=new BMap.Point(ponits_[i].lng,ponits_[i].lat);
map.addOverlay(new BMap.Marker(pt));
}
}
},mOption
);
}
//排序
function arrBubble(arr){
for(var i=0;i<arr.length;i++){
for(var j=0;j<arr.length-1;j++){
if(arr[j+1].distance<arr[j].distance){
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
return arr;
}
</script>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>根据地图上任意一点的经纬度获取周边最近的POI位置信息</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=FB14a133b9bf40fec90d36c84fb4dd13"></script>
<script type="text/javascript" src="http://api.map.baidu.com/library/DistanceTool/1.2/src/DistanceTool_min.js"></script>
</head>
<body>
<input type="button" onclick="getPOI();" value="确定" />
<div style="width:600px;height:340px;border:1px solid gray;" id="container"></div>
<div style="width:300px;height:340px;border:1px solid gray;border-left:0;" id="panel"></div>
</body>
</html>
<script type="text/javascript">
//启用滚轮缩放
var map= new BMap.Map("container");
var mPoint= new BMap.Point(104.0831760000, 30.6608250000);
map.centerAndZoom(mPoint, 16);
function getPOI(){
var ss=displayPOI(104.0831760000, 30.6608250000,1000);//根据需要自己传经纬度
}
var myGeo = new BMap.Geocoder();
function displayPOI(lng,lat,r){//参数:经lat、纬度lng、半径r
var mOption = {
poiRadius : r, //半径为r米内的POI,
numPois : 50 //最多只有12个 系统决定的
}
var ponits_=[];//经纬度和地址信息
myGeo.getLocation(mPoint,
function mCallback(rs){
var allPois = rs.surroundingPois; //获取全部POI(半径R的范围 最多12个点)
if(allPois==null || allPois==""){
return;
}
var disMile=[];//储存周围的点和指定点的距离
for(i=0;i<allPois.length;i++){//计算得到的POI坐标和指定坐标的距离
var pointA=new BMap.Point(allPois[i].point.lng,allPois[i].point.lat);
disMile.push({'lng':allPois[i].point.lng,'lat':allPois[i].point.lat,'distance':map.getDistance(pointA, mPoint)}) ;
}
var result=arrBubble(disMile);//disMile进行升序排列后的数组
console.log(allPois);
if(result!=null){
if(result.length>=3){//获取最多3个点 可以自己设定 但是最多就12个点
var k1=0;//去掉重复
var k2=0;
var k3=0;
for(var i=0;i<allPois.length;i++){
if(result[0].lng==allPois[i].point.lng && result[0].lat==allPois[i].point.lat && k1==0){
ponits_.push({'lng':result[0].lng,'lat':result[0].lat,'address':allPois[i].title});
k1++;
}else if(result[1].lng==allPois[i].point.lng && result[1].lat==allPois[i].point.lat && k2==0){
ponits_.push({'lng':result[1].lng,'lat':result[1].lat,'address':allPois[i].title});
k2++;
}else if(result[2].lng==allPois[i].point.lng && result[2].lat==allPois[i].point.lat && k3==0){
ponits_.push({'lng':result[2].lng,'lat':result[2].lat,'address':allPois[i].title});
k3++;
}
}
}else if(result.length==2){
var k1=0;
var k2=0;
for(var i=0;i<allPois.length;i++){
if(result[0].lng==allPois[i].point.lng && result[0].lat==allPois[i].point.lat && k1==0){
ponits_.push({'lng':result[0].lng,'lat':result[0].lat,'address':allPois[i].title});
k1++;
}else if(result[1].lng==allPois[i].point.lng && result[1].lat==allPois[i].point.lat && k2==0){
ponits_.push({'lng':result[1].lng,'lat':result[1].lat,'address':allPois[i].title});
k2++;
}
}
}else if(result.length==1){
var k1=0;
for(var i=0;i<allPois.length;i++){
if(result[0].lng==allPois[i].point.lng && result[0].lat==allPois[i].point.lat && k1==0){
ponits_.push({'lng':result[0].lng,'lat':result[0].lat,'address':allPois[i].title});
k1++;
}
}
}
}
console.log(ponits_);
if(ponits_!=null){//这里的points_包含了所需的经纬度和地址信息 具体操作自己设置
for(var i=0;i<ponits_.length;i++){
var pt=new BMap.Point(ponits_[i].lng,ponits_[i].lat);
map.addOverlay(new BMap.Marker(pt));
}
}
},mOption
);
}
//排序
function arrBubble(arr){
for(var i=0;i<arr.length;i++){
for(var j=0;j<arr.length-1;j++){
if(arr[j+1].distance<arr[j].distance){
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
return arr;
}
</script>
相关文章推荐
- 百度地图_根据地图上标记位置获取街道信息,以及经纬度信息
- 百度地图_根据地图上标记位置获取街道信息,以及经纬度信息
- 利用HTML5定位功能获取经纬度,在根据经纬度利用百度地图获取位置信息
- Android app接入百度地图:禁用手势、模式切换、根据经纬度获取位置信息
- 通过poi获取到了商店的地理位置之后,如何获取商店的详细信息。是需要商店提供还是地图提供
- 根据经纬度获取地理位置名称省、市等信息
- 凨-百度地图API之地图标注(JS版),地理位置信息,根据地址获取经度纬度
- C#的百度地图开发(三)依据坐标获取位置、商圈及周边信息
- 百度地图最新版本sdk使用系列(八)-获取当前地图中心点的经纬度并计算与当前位置的距离
- C#的百度地图开发(三)依据坐标获取位置、商圈及周边信息
- 根据GPS获得的经纬度来获取地理位置信息
- 根据经纬度来获取地理位置信息demo
- 根据经纬度获取百度地图的详细地址信息
- 百度地图API根据某个经纬度值(地理坐标)查询对应的地址信息以及该地址周边的POI(Point of Interest,兴趣点)信息
- 百度地图根据经纬度获取国家、州市等地址相关信息
- 根据经纬度获取用户当前位置信息
- 百度地图之根据经纬度信息获取地址方法
- 根据HTML5 获取当前位置的经纬度【百度地图】【高德地图】
- 根据经纬度来获取地理位置信息demo
- 关于51地图中循环根据经纬度获取地理位置只显示一条数据的问题