腾讯地图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是刚刚打印的数组,处理后的结果如下图:

 

转载于:https://www.cnblogs.com/maidou0702/p/9268815.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值