从已知位置查找最近的列出(数组?)城市
Finding nearest listed (array?) city from known location
我希望将HTML5地理定位功能集成到网站中。我遇到的问题是在选择列表中获得最近的城市/城镇。该网站只在一定数量的城镇和城市中支持/销售,所以这个想法是浏览器找到他们的位置并选择离他们最近的城镇或城市。听起来很简单,但这是"找到最近的",我可以得到我的头。
我发现了一个线程,帮助我通过从浏览器获得长/lat的过程,并把它变成他们的城镇/城市名称,但这并没有帮助找到最近的列表之一:反向地理编码与谷歌地图API和PHP获得最近的位置使用lat,长坐标
是否有任何api(最好在谷歌),将找到最近的上市位置?
您可以使用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);
}
最简单的方法是使用haversine公式或球面几何库的computeDistanceBetween方法计算从用户位置到所有城市的"as The crow flies"距离,并选择最小的。
如果您有少于100个地点,您可以使用距离矩阵确定最短的驾驶距离,然后选择具有最短结果的城镇。
我认为最简单的解决方案是将每个城镇或城市的最新坐标存储在数据库中,然后围绕用户位置进行基于半径的搜索,并产生最接近的结果。
看一下对这个问题的公认答案。
mysql相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在函数中添加数组元素的数值
- 无法通过数组映射绑定
- javascript中的数组出错
- 如何使用 node.js 比较两个 json 数组
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 根据id将json数组组合为一个json数组
- 如何通过数组更新角度子范围
- 如何从谷歌地图API返回的结果数组中提取城市名称
- 美国城市/州数组的简单方法
- 从已知位置查找最近的列出(数组?)城市