直接上重點。 如果是定位不准,Web瀏覽器端, 1,要使用者必須要做個人認證或者企業認證,且通過審核。 2,請求的網頁必須是https協議。 3,請求的功能變數名稱必須是加入到應用的Referer白名單。進入到應用設置里查看。 4,申請的應用類型必須是瀏覽器端。且必須勾選對應的服務。 有時申請地圖服務的人和 ...
直接上重點。
如果是定位不准,Web瀏覽器端,
1,要使用者必須要做個人認證或者企業認證,且通過審核。
2,請求的網頁必須是https協議。
3,請求的功能變數名稱必須是加入到應用的Referer白名單。進入到應用設置里查看。
4,申請的應用類型必須是瀏覽器端。且必須勾選對應的服務。
有時申請地圖服務的人和開發的人,不是同一個人。導致兩邊都沒搞清楚要怎麼配置。如果滿足以上4點99.9%以上會覆蓋你所有的問題。
剩下的是代碼問題。我把自己的寫的非同步載入js,通過經緯度定位的代碼貼出來。
1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta charset="utf-8" /> 6 <title>定位測試</title> 7 </head> 8 9 <body> 10 11 <div> 12 <H1>定位</H1> 13 <p> 14 <h3>錯誤碼:</h3> 15 6 ERR_PERMISSION_DENIED,沒有許可權,定位被拒絕 16 2 ERR_POSITION_UNAVAILABLE,定位不可用 17 8 ERR_POSITION_UNAVAILABLE,定位超時 18 19 </p> 20 </div> 21 <div id="allmap" name="allmap" style="width: 500px; height:500px;"></div> 22 </body> 23 24 <script type="text/javascript"> 25 26 function getxy() { 27 var map = new BMapGL.Map("allmap"); 28 29 var geolocation = new BMapGL.Geolocation(); 30 geolocation.getCurrentPosition(function (r) { 31 if (this.getStatus() == BMAP_STATUS_SUCCESS) { 32 var mk = new BMapGL.Marker(r.point); 33 map.addOverlay(mk); 34 35 console.log('您的位置:' + r.point.lng + ',' + r.point.lat); 36 37 map.panTo(r.point); 38 map.centerAndZoom(new BMapGL.Point(r.point.lng, r.point.lat), 14); 39 40 41 } 42 else { 43 alert('錯誤碼:' + this.getStatus()); 44 } 45 }); 46 47 } 48 49 function getip() { 50 51 var map = new BMapGL.Map("allmap"); 52 var point = new BMapGL.Point(116.331398, 39.897445); 53 map.centerAndZoom(point, 12); 54 55 function myFun(result) { 56 var cityName = result.name; 57 map.setCenter(cityName); 58 alert("當前定位城市:" + cityName); 59 } 60 var myCity = new BMapGL.LocalCity(); 61 myCity.get(myFun); 62 63 64 } 65 66 function initialize() { 67 68 //getip(); 69 getxy(); 70 } 71 72 function loadScript() { 73 var script = document.createElement("script"); 74 script.src = "https://api.map.baidu.com/api?v=1.0&type=webgl&ak=你的KEY&callback=initialize"; 75 76 var head = document.getElementsByTagName("head")[0]; 77 head.appendChild(script); 78 //head.append(script); 79 } 80 81 loadScript(); 82 83 </script> 84 85 </html>View Code
代碼的大概解釋:
1,非同步載入百度地圖js
2,如果不需要展示地圖,BMapGL.Map("allmap") 這個new對象可以註釋掉。只要獲取經緯度就行,提高頁面響應速度。
3,js非同步載入後會自動調用initialize 回調方法。 4,首次定位瀏覽器會提示同意獲取定位,如果拒絕了需要手動開啟定位。 5,避免獲取失敗,可以先通過經緯度,在通過IP定位6,註意下js代碼順序,先載入百度js,後獲取定位。
完整的定位效果:
以上就是這些,希望幫助到你。