从已知位置查找最近的列出(数组?)城市

Oli*_*pin 0 javascript php jquery google-maps google-maps-api-3

我希望将 HTML5 地理定位功能集成到网站中。我遇到的问题是在选定的列表中获取最近的城市/城镇。该网站仅在一定数量的城镇和引用中受支持/营销,因此浏览器可以找到其位置并选择最近的城镇或城市。听起来很简单,但我能想到的是“找到最近的”。

我发现一个线程可以帮助我完成从浏览器获取经度/纬度并将其转换为城镇/城市名称的过程,但这无助于找到最近的列出的名称:Reverse Geocoding With Google Map API And PHP 使用经纬度坐标获取最近位置

是否有任何 API(最好在 Google 中)可以找到最近的列出位置?我看过了,但找不到任何类似的东西。

dav*_*han 5

您可以使用半正矢公式找到最近的城市。以下函数用于计算地理坐标与数组坐标之间的距离

function deg2rad(degrees){
radians = degrees * (Math.PI/180);
return radians;
}

function Haversine(lat1,lon1,lat2,lon2) {
  deltaLat = lat2 - lat1 ;
  deltaLon = lon2 - lon1 ;
  earthRadius = 3959; // in miles 6371 in meters.
  alpha    = deltaLat/2;
  beta     = deltaLon/2;
  a        = Math.sin(deg2rad(alpha)) * Math.sin(deg2rad(alpha)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.sin(deg2rad(beta)) * Math.sin(deg2rad(beta)) ;
  c        = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
  distance =  earthRadius * c;
  return distance.toFixed(2);
}
Run Code Online (Sandbox Code Playgroud)