獲取使用者精準地理位置資訊步驟:
1.通過 navigator.geolocation.getCurrentPosition(showPosition, showError); 方法獲取經緯度;
2.使用百度地圖座標轉換介面(http://api.map.baidu.com/geoconv/v1/?coords=114.21892734521,29.575429778924&from=1&to=5&ak=你的金鑰)轉換經緯度;百度地圖官方文件:http://lbsyun.baidu.com/index.php?title=webapi/guide/changeposition
3.使用百度地圖逆地理編碼服務介面(http://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location=35.658651,139.745415&output=json&pois=1&ak=您的ak)將座標點(經緯度)轉換為對應位置資訊(如所在行政區劃,周邊地標點分佈);百度地圖官方文件:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding-abroad
* 注意兩個介面填寫的經緯度的順序不一樣:
座標轉換介面:經度在前,緯度在後(經度,緯度);逆地理編碼:緯度在前,經度在後(緯度,經度)
示例程式碼:注意引入jQuery檔案
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> 6 <title>HTML5獲取地理位置定位資訊</title> 7 <meta name="keywords" content="html5,地理位置"/> 8 </head> 9 <body> 10 11 <div class="demo"> 12 <p>地理座標:<br/><span id="latlon"></span></p> 13 <div class="geo"> 14 <p>百度地圖定位位置:</p> 15 <p id="baidu_geo"></p> 16 </div> 17 </div> 18 19 <script type="text/javascript" src="js/jquery.min.js"></script> 20 <script> 21 function getLocation() { 22 if (navigator.geolocation) { 23 navigator.geolocation.getCurrentPosition(showPosition, showError); 24 } else { 25 alert("瀏覽器不支援地理定位..."); 26 } 27 } 28 29 function showPosition(position) { 30 $("#latlon").html("緯度:" + position.coords.latitude + `,經度:` + position.coords.longitude); 31 // 座標轉換:經度在前,緯度在後(經度,緯度) 32 // 逆地理編碼:緯度在前,經度在後(緯度,經度) 33 var latlon = position.coords.longitude + `,` + position.coords.latitude; 34 var changeLatlon = ``; 35 // 百度地圖座標轉換 36 var changeUrl = `http://api.map.baidu.com/geoconv/v1/?coords=` + latlon + `&from=1&to=5&ak=lRRyy6qoBwnAgj3w4ugGFqoSsWC8du3v`; 37 $.ajax({ 38 type: "GET", 39 dataType: "jsonp", 40 url: changeUrl, 41 success: function (json) { 42 if (json.status == 0) { 43 $.each(json.result,function (i,v) { 44 // 逆地理編碼:緯度在前,經度在後 45 changeLatlon = v.y + `,` + v.x; 46 }); 47 //百度地圖逆地理編碼 48 var url = "http://api.map.baidu.com/geocoder/v2/?ak=lRRyy6qoBwnAgj3w4ugGFqoSsWC8du3v&callback=renderReverse&location=" + changeLatlon + "&output=json&pois=0"; 49 $.ajax({ 50 type: "GET", 51 dataType: "jsonp", 52 url: url, 53 beforeSend: function () { 54 $("#baidu_geo").html(`正在定位...`); 55 }, 56 success: function (json) { 57 if (json.status == 0) { 58 $("#baidu_geo").html(json.result.formatted_address); 59 } 60 }, 61 error: function (XMLHttpRequest, textStatus, errorThrown) { 62 $("#baidu_geo").html(changeLatlon + "的地址位置獲取失敗"); 63 } 64 }); 65 } 66 }, 67 error: function (XMLHttpRequest, textStatus, errorThrown) { 68 alert("座標轉換失敗"); 69 } 70 }); 71 } 72 73 // 定位失敗 傳 預設地址 74 function showError(error) { 75 switch (error.code) { 76 case error.PERMISSION_DENIED: 77 alert("定位失敗,使用者拒絕請求地理定位"); 78 break; 79 case error.POSITION_UNAVAILABLE: 80 alert("定位失敗,位置資訊不可用"); 81 break; 82 case error.TIMEOUT: 83 alert("定位失敗,請求獲取使用者位置超時"); 84 break; 85 case error.UNKNOWN_ERROR: 86 alert("定位失敗,定位系統失效"); 87 break; 88 } 89 } 90 91 getLocation(); 92 93 </script> 94 </body> 95 </html>
—————————————–END—————————————