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