1. 程式人生 > >微信坐標轉換百度坐標

微信坐標轉換百度坐標

docs symbol 方便 實現 doc urn 公開 script jsonp

1.問題

項目中需要進行測距,當前位置到指定位置的直線距離,目的坐標使用為百度坐標,而我們在微信裏獲取的當前坐標為wgs-48國際坐標這裏需要對其進行轉換

2.轉化微信坐標到百度坐標

在這裏百度為我們提供了轉換工具,只要按照轉換文檔進行轉換即可,大家可以到這個網址上看看http://lbsyun.baidu.com/index.php?title=webapi/guide/changeposition應該就知道如何進行轉換了,當然這裏我們會用到百度的jssdk

關於jssdk我們只需要引入相應的src路徑即可

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的ak"></script>
這裏大家只需要改成你自己的ak就行了,關於這個秘鑰怎麽獲取在上面的網址鏈接中百度會告訴如何取申請自己的ak

<script src="http://api.map.baidu.com/library/GeoUtils/1.2/src/GeoUtils_min.js" type="text/javascript"></script>
這裏使我們下面要進行測距需要使用到的工具類

因為jssdk後我們就可以轉換了,這裏直接上代碼
技術分享圖片
function getBaiduPosition(lng,lat) {
        var url ="http://api.map.baidu.com/geoconv/v1/?coords="+lng+","+lat+"&from=1&to=5&ak="+config.ak;
        $.ajax({
            url: url,
            type: ‘GET‘,
            contentType: "application/json",
            dataType: ‘jsonp‘,//這裏要用jsonp的方式不然會報錯
            success: function(data) {
                config.lng = data.result[0].x;//經度
                config.lat  = data.result[0].y;//緯度
            }
        });
    }
技術分享圖片

這段代碼就是將其他坐標轉換為百度坐標,至於裏面的from和to參數大家還是參考上面的網址中知道去填寫。

其中這裏的lng是經度,lat是緯度,這裏使用的是jsonp因為出現了跨域問題所以只能通過這種方式解決,幸好百度支持^_^,這裏我是將獲取到轉換的經緯度坐標保存到了配置文件裏方便後面使用。

3.進行測距

因為目的坐標是我們可以從服務器端獲取的,這裏我們也獲取到了當前位置的坐標,這樣我們就可以測距了,這裏直接上代碼:

技術分享圖片
function getDistance(lng,lat){

        //測距需要的兩點
        var point1 = new BMap.Point(lng,lat);
        var point2 = new BMap.Point(config.lng,config.lat);
        
        //進行測距
        var distance = BMapLib.GeoUtils.getDistance(point1, point2);

        return distance;
       // $.alert(distance);
    }
技術分享圖片

上面的這段代碼就是進行測距的,主要使用到了工具類裏面的東西,這個工具類百度是公開的源碼的哦,大家有興趣可以了解下 http://api.map.baidu.com/library/GeoUtils/1.2/docs/symbols/BMapLib.GeoUtils.html

好了經過上面的兩段代碼就實現了微信公眾號獲取到的當前位置轉換成百度坐標,並進行測距。

這裏需要大家註意的是兩個js的引入以及轉換坐標時的url的使用

微信坐標轉換百度坐標