關於微信位置接口所獲坐標轉百度坐標


首先要明確一點,微信位置接口獲取的坐標默認是wgs84類型,明確了坐標類型才好進行轉換

以下是微信公眾平台上獲取的信息:

從這個微信JS-SDK說明文檔就可以看到坐標類型,繼而去找百度提供的接口,看是否有直接可以用的,

在百度的坐標轉換API中有這么一說:

從以上截圖的部分可以看出,只要使用 http://api.map.baidu.com/geoconv/v1/?coords=114.21892734521,29.575429778924;114.21892734521,29.575429778924&from=1&to=5&ak=你的密鑰 

百度提供的這個接口就可以完全多種坐標到百度坐標的轉換,參數根據截圖中的說明(或者自己找百度api)配置即可,當然了,在api可以看到有使用次數限制,但一般來說是夠的,如果特殊情況下不夠的話就多申請幾個,輪流使用,順便附帶上具體使用代碼

 1 wx.config({
 2             debug: false, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。
 3             appId: '${appId}', // 必填,企業號的唯一標識,此處填寫企業號corpid
 4             timestamp: '${timeStamp}', // 必填,生成簽名的時間戳
 5             nonceStr: '${nonceStr}', // 必填,生成簽名的隨機串
 6             signature: '${signature}',// 必填,簽名,見附錄1
 7             jsApiList: [
 8                 'checkJsApi',
 9                 'getLocation'
10             ] // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2
11         });
12 
13         wx.checkJsApi({
14             jsApiList: [
15                 'getLocation'
16             ] ,
17             success : function (res) {
18                 //alert(JSON.stringify("js check res:" + res));
19                 //alert(JSON.stringify(res.checkResult.getLocation));
20                 if (res.checkResult.getLocation == false) {
21                     alert('你的微信版本太低,不支持微信JS接口,請升級到最新的微信版本!');
22                     return;
23                 }
24             }
25         });
26 
27         wx.ready(function () {
28             wx.getLocation({
29                 success : function (res) {
30                     //alert("getlocation res:" + res);
31                     var latitude = res.latitude;// 緯度,浮點數,范圍為90 ~ -90
32                     //lat = res.latitude;
33 
34                     var longitude = res.longitude;// 經度,浮點數,范圍為180 ~ -180。
35                     var x = res.longitude;
36                     var y = res.latitude;
37                     console.log("location is lng=" + x + "  lat=" + y);
38                     //changCoordinate(x, y);
39                     //alert("location1 is lng=" + lng + "  lat=" + lat);
40                     var url = "http://api.map.baidu.com/geoconv/v1/?coords=" + x + "," + y + "&from=1&to=5&ak=oLtCrdQBk9xf7Tb543NBGXPGnBQIkXRe";
41                     $.get(url, function(data) {
42                         if(data.status === 0) {
43                             lng = data.result[0].x;
44                             lat = data.result[0].y;
45                             console.log("location is lng=" + lng + "  lat=" + lat);
46                             //alert("location2 is lng=" + lng + "  lat=" + lat);
47                         }
48                     }, 'jsonp');
49 
50                     var speed = res.speed;// 速度,以米/每秒計
51                     var accuracy = res.accuracy;// 位置精度
52                 },
53                 cancel : function (res) {
54                     alert('用戶拒絕授權獲取地理位置');
55                 }
56             });
57         });

上述js主要是在springBoot框架下開發微信公眾號的頁面中使用,說明一點:如果需要在頁面一打開的時候就獲取地理位置,則將接口調用寫到wx.ready中(如圖中所示),而如果是要在點擊事件再來調用,則自己改咯

 

另外說一下js通過參數計算的方式來轉換坐標

首先高德地圖轉百度地圖的js參數計算方式在之前的一篇文章中

其次,wgs84坐標轉百度坐標,在網上找了一些計算方式,未經過驗證,僅記錄,后續有空了再來驗證

方法一:

var ggPoint=[];
//循環獲取轉換前的坐標

for (var j = 0; j < result.length; j++) {
var poi = new BMap.Point(result[j].Longitude, result[j].Latitude);//獲取轉換前的坐標
ggPoint.push(poi);//循環寫入經緯度到ggPoint這個數組

}
var bdpoi = GpsToBaiduPoints(ggPoint);//GpsToBaiduPoints調用的一個js
//循環寫入轉換后的坐標
for (var j = 0; j < bdpoi.length; j++) {
var poi = bdpoi[j];// new BMap.Point(bdpoi[j].Longitude, bdpoi[j].Latitude);

var myIcons = new BMap.Icon("/images/zdlcsgreen.png", new BMap.Size(12, 12));//這個在地圖上顯示的圖片可以自己設置
var marker = new BMap.Marker(poi, { icon: myIcons });

var label = new BMap.Label(“轉換后”, { offset: new BMap.Size(20, -10) });

map.addOverlay(marker);
marker.setLabel(label);
}

方法二(看着有點詭異,IE6是什么鬼):

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM