1. 程式人生 > >呼叫百度地圖顯示周圍方圓100米、500米、1000米附近的餐館賓館酒店及公交站點API介面

呼叫百度地圖顯示周圍方圓100米、500米、1000米附近的餐館賓館酒店及公交站點API介面

呼叫百度地圖顯示周圍方圓100米、500米、1000米附近的餐館、賓館及公交站點程式碼


<!DOCTYPE html>

<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
<title>資料介面</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.2"></script>
</head>
<body>
地址:<input type="text" name="address" id="address"  value="上海市"/> <button id="mapsearch" onClick="searchAddress()">搜尋</button>
<div style="width:600px;height:400px;border:1px solid gray" id="container"></div>
<div id="results" style="font-size:13px;margin-top:10px;"></div>
</body>
</html>
<script type="text/javascript">
 var map = new BMap.Map("container");
 map.addControl(new BMap.NavigationControl());//建立一個特定樣式的地圖平移縮放控制元件
 map.enableScrollWheelZoom();
 var lng=121.5;
 var lat=31.3;
 var point = new BMap.Point(lng,lat);

 //在地圖首次自動載入的時候以lng=121.5,lat=31.3經緯度顯示該地附近的餐館。
    allmap(point);

 //當點選滑鼠左鍵的時候,獲得點選事件,獲得點選點經緯度,通過經緯度搜索方圓附近的餐館。
 map.addEventListener("click", function(){

  map.clearOverlays();//清除由於上次事件留下的痕跡。
 var center = map.getCenter();//為得到地圖的中心點位,返回GLatLng型別的值.
 lng=center.lng;
 lat=center.lat;
 point = new BMap.Point(lng,lat);
    allmap(point);
   });

    function getSquareBounds(centerPoi,r){
        var a = Math.sqrt(2) * r; //正方形邊長
        mPoi = getMecator(centerPoi);
        var x0 = mPoi.x, y0 = mPoi.y;
        var x1 = x0 + a / 2 , y1 = y0 + a / 2;//東北點
        var x2 = x0 - a / 2 , y2 = y0 - a / 2;//西南點

        var ne = getPoi(new BMap.Pixel(x1, y1)), sw = getPoi(new BMap.Pixel(x2, y2));
        return new BMap.Bounds(sw, ne);
    }
    //根據球面座標獲得平面座標。
    function getMecator(poi){
        return map.getMapType().getProjection().lngLatToPoint(poi);
    }
    //根據平面座標獲得球面座標。
    function getPoi(mecator){
        return map.getMapType().getProjection().pointToLngLat(mecator);
    }

 //根據經緯度這個點,搜尋方圓附近所有的餐館。
    function allmap(point){
  map.centerAndZoom(point,11);
     var circle = new BMap.Circle(point,1000,{fillColor:"blue", strokeWeight: 1 ,fillOpacity: 0.3, strokeOpacity: 0.3});
     map.addOverlay(circle);
     var local = new BMap.LocalSearch(map, {
     renderOptions: {map: map, panel: "results"}});
     var bounds = getSquareBounds(circle.getCenter(),circle.getRadius());
     local.searchInBounds("餐館",bounds);//以圓形為範圍以餐館為關鍵字進行搜尋。
 }

    //獲得輸入框address的地址,通過地址解析,獲得該地址的經緯度。記住該地址只能為上海市地區的位置。
 function searchAddress(){
 var address = document.getElementByIdx_x_x_x("address").value;
 var myGeo = new BMap.Geocoder();
  myGeo.getPoint(address, function(point){
 if (point) {
 map.addOverlay(new BMap.Marker(point));
 map.clearOverlays();//清除由於上次事件留下的痕跡。
    allmap(point);
       }        }, "上海市");
    }
</script>