百度地圖API

官網:http://lbsyun.baidu.com/javascript

如下都是在Web端完成操做html

http://lbsyun.baidu.com/jsdemo.htm#b0_3  和 http://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference.htmljava

這兩個頁面基本能夠解決你的問題。git

更新:web

17/8/5       ① 定位當前位子       ② 座標轉換,GPS轉百度座標  api

 

①獲取祕鑰 數組

填寫資料獲取祕鑰,沒有祕鑰啥也作不了。函數

 

 

而後在頁面上調用jsAPIspa

咱們就能夠用此API裏面全部的類。   code

 

建立咱們的地圖:

  Map :       此類是地圖API的核心類,用來實例化一個地圖。

 構造函數:

MapOptions (此類表示Map構造函數的可選參數。它沒有構造函數,但可經過對象字面量形式表示。)

MapOptions 主要屬性

Map:

主要方法:

 

事件想了解本身去看吧,這裏主要是看方法。

 

 

 

打造一個地圖容器(一片區域)

<div style="width: 800px; height: 600px; border: 1px solid gray" id="container"></div>   //先把容器的大小肯定
     var map = new BMap.Map("container");//建立Map實例
            //初始化  兩個選其一
            map.centerAndZoom(new BMap.Point(114.3162001,30.58108413),12);//座標點  第二個級別參數必須的加 
           // map.centerAndZoom("武漢");//城市名

    map.enableScrollWheelZoom(true);//滾輪縮放大小
            map.setMinZoom(4);//最小級別
            map.setMaxZoom(16);//最大級別
            //// var map = new BMap.Map("container", {setMinZoom:4,setMaxZoom:16});//建立Map實例

  

 

  添加平移縮放控件

 NavigationControl

  屬性:(控件都有這幾個屬性)

 

 

 

 

 

            //添加默認縮放平移控件  默認是左上角 可滑動縮放
            var ctrNav = new BMap.NavigationControl({
            });
            //等同於
            //var ctrNav = new BMap.NavigationControl({
            //    anchor: BMAP_ANCHOR_TOP_LEFT,
            //    type: BMAP_NAVIGATION_CONTROL_LARGE
            //})

            map.addControl(ctrNav);

 

ScaleControl

 比例尺控件

       //比例尺控件 默認在左下角
            var ctrSc = new BMap.ScaleControl();
            map.addControl(ctrSc);

 

 

 

 

 

 

          //地圖控件  默認右上角,三種都有
            var ctrMap = new BMap.MapTypeControl({
            })
            map.addControl(ctrMap);

你須要什麼在參數裏面進行過濾

            var mapType1 = new BMap.MapTypeControl({ mapTypes: [BMAP_NORMAL_MAP, BMAP_HYBRID_MAP] });
            map.addControl(mapType1);

New BMap.CityListControl()  城市列表控件

 

 覆蓋類

 

 

            //書城路18號歡樂匯5樓
            var mark = new BMap.Marker(new BMap.Point(114.345847, 30.5126));
            //參數只能用座標來表示,若是想要用地址表示,須要用到地址解析
            map.addOverlay(mark);

 

 

  //書城路18號歡樂匯5樓 
            //新建一個圖表
            var myIcon = new BMap.Icon("http://lbsyun.baidu.com/jsdemo/img/fox.gif", new BMap.Size(300, 157));
            var mark = new BMap.Marker(new BMap.Point(114.345847, 30.5126),{ title: "666",icon:myIcon });
            //參數只能用座標來表示,若是想要用地址表示,須要用到地址解析
            map.addOverlay(mark);

 

 

  
            //帶檢索功能的信息窗口
            var content = '<div style="margin:0;line-height:20px;padding:2px;">' +
                            '地址:書城路18號歡樂匯5樓' + '<br/>' +
                            '電話:15871.......' +  '<br/>' +
                            '簡介:健身電影娛樂場所' + '<br/>' +
                            '</div>';
            //建立檢索信息窗口對象
            var searchInfoWindow = null;
            searchInfoWindow = new BMapLib.SearchInfoWindow(map, content, {
                title: "歡樂匯影城",      //標題
                width: 290,             //寬度
                height: 90,              //高度
                panel: "panel",         //檢索結果面板
                enableAutoPan: true,     //自動平移
                searchTypes: [
                    BMAPLIB_TAB_SEARCH,   //周邊檢索
                    BMAPLIB_TAB_TO_HERE,  //到這裏去
                    BMAPLIB_TAB_FROM_HERE //從這裏出發
                ]
            });
            var marker = new BMap.Marker(new BMap.Point(114.345847, 30.5126)); //建立marker對象
           // marker.enableDragging(); //marker可拖拽
            marker.addEventListener("click", function (e) {
                searchInfoWindow.open(marker);
            })
            map.addOverlay(marker); //在地圖中添加marker

 

GPS     關係路線  Rote  後面都有這個,步行,駕車等等...

 

 

 

 

     var driving2 = new BMap.DrivingRoute(map, {
                renderOptions:
                    { map: map, autoViewport: true }
            });    //駕車實例
            driving2.search("湖北省武漢市光谷廣場","湖北省武漢市礄口區中山公園"); //把路線劃出來

 

 檢索

 

 

     //單個關鍵字
            var local = new BMap.LocalSearch(map, {
                renderOptions: { map: map, autoViewport:true }
            });
            local.search("景點");

 

            //多關鍵字
            var myKeys = ["酒店", "加油站"];  //用數組存起來 var local = new BMap.LocalSearch(map, {
                renderOptions: { map: map, panel: "r-result" }, //須要準備一個id=r-result的區域來顯示信息
                pageCapacity: 5
            });
            local.searchInBounds(myKeys, map.getBounds()); 

 

 路線規劃:計算駕車時間和距離

getPlan的父類

 

 

 

            var output = "時長爲:";

            //檢索完成後的回調函數     results 就是DrivingRouteResult  
            var searchComplete = function (results) {
                if (transit.getStatus() != BMAP_STATUS_SUCCESS) {
                    return;
                }
                var plan = results.getPlan(0); //第0條方案   
                output += plan.getDuration(true) + "\n";                //獲取時間
                output += "總路程爲:";
                output += plan.getDistance(true) + "\n";             //獲取距離
            }


            var transit = new BMap.DrivingRoute(map, {
                renderOptions: { map: map },
                onSearchComplete: searchComplete, //執行回調函數
                onPolylinesSet: function () { //折線添加完成執行函數
                    setTimeout(function () { alert(output) }, "1000");
                }
            });
            transit.search("湖北省武漢市光谷廣場", "湖北省武漢市礄口區中山公園"); //劃折線

 

 

 步行規劃  跟駕車相似的,會一個全都會了

   //步行規劃
            var walking = new BMap.WalkingRoute(map, { renderOptions: { map: map, panel: "r-result", autoViewport: true } });
            walking.search("湖北省武漢市光谷廣場", "湖北省武漢市武漢市江漢區中山公園");

 

 

  

地址解析:                當你地址解析不正確的時候,須要轉換一下座標的,下面介紹

 

            // 建立地址解析器實例        有時候web網頁中解析的地址有誤差
            var myGeo = new BMap.Geocoder();   
//能夠對地址進行批量解析 把全部的地址進行循環,傳到 .getPoint 裏面去就能夠了
//這個能夠配合檢索窗口一塊兒用,看你須要什麼進行結合就能夠了
// 將地址解析結果顯示在地圖上,並調整地圖視野 myGeo.getPoint("光谷廣場", function (point) { if (point) { map.centerAndZoom(point, 16); map.addOverlay(new BMap.Marker(point)); } else { alert("您選擇地址沒有解析到結果!"); } }, "武漢市");

 

 

  

時間:      更新  17/8/5    

 

逆解析:

 

   定位當前座標的案例:

    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=xxxxx"></script>
    <script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script> <%--用於單個座標轉換方法--%>
 <script type="text/javascript">
            $(function () {           
              navigator.geolocation.getCurrentPosition(translatePoint); //定位 成功時調用次方法、 
            });
            function translatePoint(position) {
                var currentLat = position.coords.latitude; //地理緯度
                var currentLon = position.coords.longitude;  //地理經度
                var gpsPoint = new BMap.Point(currentLon, currentLat);//  Point gosPoint=new BMap.Point(經度,緯度)
                console.log("befor:"+gpsPoint.lng+","+gpsPoint.lat);

                BMap.Convertor.translate(gpsPoint, 0, initMap); //轉換座標   成功調用下面的方法
            }
            function initMap(point) {
                console.log("after:"+point.lng+","+point.lat);
                //初始化地圖 
                map = new BMap.Map("container");
                map.enableScrollWheelZoom(true);     //開啓鼠標滾輪縮放
                map.addControl(new BMap.NavigationControl());  //  添加平移縮放控件
                map.addControl(new BMap.ScaleControl());  //比例尺
                map.addControl(new BMap.OverviewMapControl()); //此類表示縮略地圖控件。
                map.centerAndZoom(point, 15);  //設置中心城市
                map.addOverlay(new BMap.Marker(point));  //添加覆蓋物

                var geoc = new BMap.Geocoder();
                geoc.getLocation(point, function (rs) {
                    var addComp = rs.addressComponents;
                    console.log(addComp);
                    alert(addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumber);
                });
            }
        </script>

 

 

 

 

 

 座標轉換

只有當使用定位的時候纔會使用座標轉換,使用自帶的API

      navigator.geolocation.getCurrentPosition(calBack);  //定位成功執行回調函數

            function calBack(position) {
                var y = position.coords.latitude; //地理緯度
                var x = position.coords.longitude;  //地理經度
                var ggPoint = new BMap.Point(x, y);
                //地圖初始化
                var bm = new BMap.Map("container");
                bm.centerAndZoom(ggPoint, 15);
                bm.addControl(new BMap.NavigationControl());
                //添加gps marker和label
                var markergg = new BMap.Marker(ggPoint);
                bm.addOverlay(markergg); //添加GPS marker
                var labelgg = new BMap.Label("未轉換的GPS座標(錯誤)", { offset: new BMap.Size(20, -10) });
                markergg.setLabel(labelgg); //添加GPS label

                //座標轉換完以後的回調函數
                translateCallback = function (data) {
                    if (data.status === 0) {
                        var marker = new BMap.Marker(data.points[0]);
                        bm.addOverlay(marker);
                        var label = new BMap.Label("轉換後的百度座標(正確)", { offset: new BMap.Size(20, -10) });
                        marker.setLabel(label); //添加百度label
                        bm.setCenter(data.points[0]);
                    }
                }

                setTimeout(function () {
                    var convertor = new BMap.Convertor();
                    var pointArr = [];
                    pointArr.push(ggPoint);
                    convertor.translate(pointArr, 1, 5, translateCallback)  //座標轉換
                }, 1000);

            }
相關文章
相關標籤/搜索