javascript – 找到一组latlngs的质心(简单均值)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 找到一组latlngs的质心(简单均值),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1690字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 找到一组latlngs的质心(简单均值)](/upload/InfoBanner/zyjiaocheng/720/300a845294c5410dbe0b3f5ea477722e.jpg)
我想使用客户端JavaScript来查找一组纬度经度(实际上是Google LatLng对象)的质心,使用简单的平均值计算.
我看到之前在Stack Overflow上已经多次询问过类似的问题,但我找不到一个简单的JavaScript答案. (这可能只是我的谷歌搜索失败,如果这是重复的道歉.)
我有类似的东西,但它不适用于平均纬度为179和-179的情况,因此质心应该是180而不是0.
var avg_lat, avg_lng;
for (var i = 0; i < google_latlngs.length; i++) {
avg_lat += google_latlngs[0].lat();
avg_lng += google_latlngs[1].lng();
}
avg_lat = avg_lat / google_latlngs.length;
avg_lng = avg_lng / google_latlngs.length;
我需要在客户端JavaScript中有效地执行此操作,并且我的点数不可能超过几公里,因此在这种情况下,大圆距离或任何花哨都不是必需的.
谢谢你的帮助.
更新:好的,任何在JavaScript中查找质心的方法都可以.
解决方法:
如果您只处理2个点,请确保在应用函数之前,两个纬度点之间的差异小于或等于180.您可以通过添加或减去360来完成此操作,这会将-179更改为181(或179到-181).当您得到最终结果时,加/减360,直到最终值在您想要的范围内.
更新
如果你希望这个有两个以上的点,我们就必须做一些几何.我们将每个纬度点视为单位圆上的点,其距离原点和特定角度a(纬度)具有一定距离x和y:
我们必须对所有x和y进行平均,然后采用结果点的角度来获得质心的最终纬度.这是JavaScript:
var latXTotal = 0;
var latYTotal = 0;
var lonDegreesTotal = 0;
var currentLatLong;
for (var i = 0; currentLatLong = google_latlngs[i]; i++) {
var latDegrees = currentLatLong.lat();
var lonDegrees = currentLatLong.lng();
var latRadians = Math.PI * latDegrees / 180;
latXTotal += Math.cos(latRadians);
latYTotal += Math.sin(latRadians);
lonDegreesTotal += lonDegrees;
}
var finalLatRadians = Math.atan2(latYTotal, latXTotal);
var finalLatDegrees = finalLatRadians * 180 / Math.PI;
var finalLonDegrees = lonDegreesTotal / google_latlngs.length;
内容总结
以上是互联网集市为您收集整理的javascript – 找到一组latlngs的质心(简单均值)全部内容,希望文章能够帮你解决javascript – 找到一组latlngs的质心(简单均值)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。