前言:需要根據用戶的地理位置,計算出邊的店家和商家。這時候使用到了高德地圖,然後利用坐标進行區域内的計算。
規則 初始的計算,用的是兩點的方式,左上和右下來确定距離,後來發現在執行的了一段時間後,有一些區域不是太好,偏差比較大,所以就修改成了,以中心點計算距離的方式來确定所歸某個區域。
地圖 高德地圖API【JS】版本
代碼 //區域中心點 以json的形式來寫的 大家可以換成自己想用的格式 var xyCenter = [ {sign:1001,lng:116.469637,lat:39.894197},{sign:1002,lng:116.383066,lat:39.962353},{sign:1003,lng:116.341653,lat:39.8707} ]; //存放每個地點所計算出來的距離 var resArray = new Array(); //填寫計算距離的結果 地點與距離 var belongArea = function(lnglat){ for(i=0;ixyCenter.length;i ){ resArray[i]=new Array(); resArray[i][sign]=xyCenter[i].sign; var endLngLat = new AMap.LngLat(xyCenter[i].lng,xyCenter[i].lat); resArray[i][range]=parseInt(Math.abs(endLngLat.distance(lnglat))); //console.log(resArray[i][range]); } }; //取最終的歸屬代号 大家可以修改成自己的,本程序所用1001 1002... var maxRes = function(){ var tmp=resArray[0]; for(i=0;iresArray.length-1;i ){ if(resArray[i][range]resArray[i 1][range]){ tmp = i; resArray[i 1] = resArray[i]; }else{ tmp = i 1; } } return resArray[tmp][sign]; }; //調用方式 //獲取LngLat var startLngLat = new AMap.LngLat(116.319766,39.911448); //傳入到計算方法 belongArea(startLngLat); //獲取到最終結果 alert(maxRes());
結論 參考高德地圖API的基礎類裡的LngLat類
核心就是我們利用中心點計算出用戶的4個點的方位。然後通過規則算出區域,即可快速判斷周邊自己想給用戶展示的數據
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!