騰訊地圖API計算與附近商家距離並排序


1.首先使用騰訊地圖API獲取自己的經緯度

騰訊地圖APIHTML5定位與糾偏

具體代碼如下:

<script>
    function getLocation(){
        //判斷是否支持 獲取本地位置
        if (navigator.geolocation)
        {
            navigator.geolocation.getCurrentPosition(showPosition);
        }
        else{x.innerHTML="瀏覽器不支持定位.";}
    }
    function showPosition(position)
    {
        var lat=position.coords.latitude;
        var lng=position.coords.longitude;
//調用地圖命名空間中的轉換接口   type的可選值為 1:GPS經緯度,2:搜狗經緯度,3:百度經緯度,4:mapbar經緯度,5:google經緯度,6:搜狗墨卡托
        qq.maps.convertor.translate(new qq.maps.LatLng(lat,lng), 1, function(res){
            //取出經緯度並且賦值
            latlng = res[0];

        });
    }

    $.ajax({
        url: "***",
        type: "post",
        async: false,
        data: {'latlng':latlng},
        dataType: "json",
        success: function (res) {
            console.log(res);
        }
    });
</script>

2.ajax將latlng傳給后端,后端調用騰訊地圖WebServiceAPI的距離計算算出與附近商家得距離,具體代碼如下:

            $http_get_url = "https://apis.map.qq.com/ws/distance/v1/?mode=driving&from=$latlng&to=".$***['lat'].",".$***['lng']."&key=EZKBZ-HRSLQ-HQN55-GIR2S-VPUPQ-*****";
            $res = json_decode(http($http_get_url),true);
            $distance = $res['result']['elements'][0]['distance'];

http是封裝好的get請求方法,用上述方法foreach循環附近商家得到的數組並不是按距離asc排序的,需要再處理下

3.循環后得到的數組如下圖

distance是離商家的距離,可以看到並不是按asc排的,需做如下處理

        $data = array_column($showlist, 'distance');
        array_multisort($data,SORT_ASC,$showlist);

$showlist是剛剛打印的數組,處理后的結果如下圖:

 


免責聲明!

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



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