通过某位置的经纬度获取周边百度地图POI的信息

来源:互联网 发布:linux arp命令 编辑:程序博客网 时间:2024/05/01 18:08

通过某位置的经纬度获取周边百度地图POI的信息:

<!DOCTYPE html><html><head>  <meta charset="UTF-8"><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 : 1             //最多只有12个 系统决定的    }    var ponits_=[];//经纬度和地址信息    myGeo.getLocation(mPoint,        function mCallback(rs){            var allPois = rs.surroundingPois; //获取全部POI(半径R的范围 最多12个点)            console.log(allPois);            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进行升序排列后的数组            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>

原文参考点击打开链接

原创粉丝点击