1. 程式人生 > >調用百度地圖開發平臺的JavascriptAPI實現將市縣位置轉換成坐標

調用百度地圖開發平臺的JavascriptAPI實現將市縣位置轉換成坐標

json 2.7 func 技術分享 真的 工具 深圳市 tar ()

最近的項目要做的地圖比較多,有的還比較復雜,而地圖用到的坐標,上網找json文件更是良莠不齊的。真是讓人傷腦筋,後來突然想到了百度地圖開發平臺,沒想到真的有對應的API哦,謝天謝地!!!下面說一下完整的實現過程吧。

詳細步驟:

  1. 首先找到百度地圖開發平臺 (鏈接: http://lbsyun.baidu.com/)

  2.打開下圖的Javascript API頁面:

     技術分享圖片

  3. 接著上面的操作,找到 Javascript API頁面左側的示例DEMO,點擊跳轉鏈接 : http://lbsyun.baidu.com/jsdemo.htm#a1_2

    技術分享圖片

  4. 在示例DEMO頁面下,找到逆/地址解析下的地址解析,如下圖:

    技術分享圖片

  5. 好啦,找到我們想要的demo,接下來肯定就是復制到本地編輯修改啦:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
        body, html,#allmap 
{width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微軟雅黑";} </style> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密鑰"></script> <title>地址解析</title> </head> <body> <div id="allmap"></div> </body>
</html> <script type="text/javascript"> // 百度地圖API功能 var map = new BMap.Map("allmap"); var point = new BMap.Point(116.331398,39.897445); map.centerAndZoom(point,12); // 創建地址解析器實例 var myGeo = new BMap.Geocoder(); // 將地址解析結果顯示在地圖上,並調整地圖視野 myGeo.getPoint("北京市海澱區上地10街", function(point){ if (point) { map.centerAndZoom(point, 16); map.addOverlay(new BMap.Marker(point)); }else{ alert("您選擇地址沒有解析到結果!"); } }, "北京市"); </script>

  6. 我們在瀏覽器打開復制下來的代碼,哎呀媽,居然提示報錯了 :(

   看提示,我們看到是因為缺了百度地圖開發平臺秘鑰,所以我們接下來要復制提示的鏈接去獲取秘鑰。

    技術分享圖片

  7. 打開上面提示的鏈接 http://lbsyun.baidu.com/apiconsole/key# ,可以看到,我這裏已經創建好了一個秘鑰

    技術分享圖片

   8. 點擊“創建應用”創建秘鑰應用

     應用名稱自定義,這裏為了演示,隨意輸入的,然後選擇瀏覽器端(根據自己的需求選擇),啟用服務我是全選的,白名單的話,因為我這裏是做測試的,所以根據提示輸入了星號。好啦,點擊提交就可以了。

    技術分享圖片

   9. 提交新建應用後會回到應用列表,可以看到我們剛提交的應用,這樣就得到了我們需要的秘鑰啦

    技術分享圖片

  10. 那麽怎麽使用該秘鑰呢?先復制圈起來的那一串字符,然後替換demo代碼的“您的秘鑰”,下面灰色標識部分:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
        body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微軟雅黑";}
    </style>
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=foH5UE6linZ6MhbINCOEAhIGuNqaO6t3"></script>
    <title>地址解析</title>
</head>
<body>
    <div id="allmap"></div>
</body>
</html>
<script type="text/javascript">
    // 百度地圖API功能
    var map = new BMap.Map("allmap");
    var point = new BMap.Point(116.331398,39.897445);
//    map.centerAndZoom(point,12);
    // 創建地址解析器實例
    var myGeo = new BMap.Geocoder();
    // 將地址解析結果顯示在地圖上,並調整地圖視野
    myGeo.getPoint("北京市海澱區上地10街", function(point){
        if (point) {
//            map.centerAndZoom(point, 16);
//            map.addOverlay(new BMap.Marker(point));   //這裏不需要展示地圖,所以將生成地圖的代碼註釋了,然後再下面打印坐標
            console.log(point);
        }else{
            alert("您選擇地址沒有解析到結果!");
        }
    }, "北京市");
</script>

  11. 再次刷新瀏覽器,打開開發者工具查看輸出結果:

   技術分享圖片

  12. 好啦,上面已經實現了地址轉換成坐標的功能啦。那麽我們來看下具體的需求: 獲取廣東省市縣的坐標

  13. 我們這裏以廣東省的21個地級市轉換為例:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>根據位置獲取坐標</title>
    </head>
    <body>
        <textarea name="" rows="" cols="" id="addressArea"></textarea>
        
        <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=hM6RX0q32fRq0q5OWMNM0wlGYuuwQtSa"></script>
        <script src="jquery.min.js"></script>   
        <script>
            var newCityDatas = {};   //存放數據的對象
//
var cityDatasStr = "廣州、深圳、佛山、東莞、中山、珠海、江門、肇慶、惠州、汕頭、潮州、揭陽、汕尾、湛江、茂名、陽江、韶關、清遠、雲浮、梅州、河源";

       //數據來源於百度百科,復制過來後修改成有規律的字符串,然後轉換成數組,在頁面輸出後再復制,也就得到下面的數組,要給每個數據添加“市”;
  
var cityDatas = ["廣州市", "深圳市", "佛山市", "東莞市", "中山市", "珠海市", "江門市", "肇慶市", "惠州市", "汕頭市", "潮州市", "揭陽市", "汕尾市", "湛江市", "茂名市", "陽江市", "韶關市", "清遠市", "雲浮市", "梅州市", "河源市"];
       
       //遍歷數組,調用方法將位置轉成坐標
for (var i=0;i<cityDatas.length;i++) { getPoint(cityDatas[i]); } function getPoint(adds){ // 創建地址解析器實例 var myGeo = new BMap.Geocoder(); // 將地址解析結果顯示在地圖上,並調整地圖視野 myGeo.getPoint(adds, function(point){ console.log(adds); newCityDatas[adds] = [point.lng,point.lat]; console.log(newCityDatas); $("#addressArea").val(JSON.stringify(newCityDatas)); //輸出拼接後的結果 }); } </script> </body> </html>

  14. 最後輸出的數據結果如下:具體的數據格式根據自己的項目需求做調整哈 :)

{
    "佛山市": [113.134026,23.035095],
    "東莞市": [113.763434,23.043024],
    "珠海市": [113.562447,22.256915],
    "深圳市": [114.025974,22.546054],
    "廣州市": [113.30765,23.120049],
    "江門市": [113.078125,22.575117],
    "肇慶市": [112.479653,23.078663],
    "中山市": [113.42206,22.545178],
    "惠州市": [114.410658,23.11354],
    "汕頭市": [116.72865,23.383908],
    "潮州市": [116.630076,23.661812],
    "湛江市": [110.365067,21.257463],
    "揭陽市": [116.379501,23.547999],
    "汕尾市": [115.372924,22.778731],
    "茂名市": [110.931245,21.668226],
    "陽江市": [111.97701,21.871517],
    "韶關市": [113.594461,24.80296],
    "雲浮市": [112.050946,22.937976],
    "清遠市": [113.040773,23.698469],
    "梅州市": [116.126403,24.304571],
    "河源市": [114.713721,23.757251]
}

  

  因為這次找坐標找得有點耗時,所以總結下來以後方便回顧學習,有問題的可以留言哦,有空再總結下最近做的地圖,某些數據也是比較難找 :)

調用百度地圖開發平臺的JavascriptAPI實現將市縣位置轉換成坐標