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

时间:2013-01-01 15:37:18

标签: php javascript jquery google-maps google-maps-api-3

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

我找到了一个帮助我完成从浏览器获取long / lat并将其转换为Town / City名称的过程的线程,但这无助于找到最近列出的那个:{{3} }

是否有任何API(最好是在谷歌)找到最近列出的位置?我看过了,找不到任何一种。

3 个答案:

答案 0 :(得分:3)

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

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);
}

答案 1 :(得分:0)

最简单的方法是使用haversine formulacomputeDistanceBetween method of the spherical geometry library计算从用户位置到所有城市的“乌鸦飞行”距离,并选择最小的一个。

如果您的地点少于100个,您可以使用Distance Matrix确定最短的行车距离,然后选择最短的城镇。

答案 2 :(得分:0)

我认为最简单的解决方案是将每个城镇或城市的lat lng坐标存储在数据库中,然后围绕用户位置进行基于半径的搜索并生成最接近的结果。

看一下这个问题的答案。

Search database with lat and long by radius using php mysql

相关问题