Google Maps Javascript - 计算方向和指南针方向来计算朝向的方向
Posted
技术标签:
【中文标题】Google Maps Javascript - 计算方向和指南针方向来计算朝向的方向【英文标题】:Google Maps Javascript - computeHeading and compass direction to calculate direction of facing 【发布时间】:2015-09-07 16:11:59 【问题描述】:对我的 currentPosition 和 destinationPosition 使用 computeHeading() 函数,我可以获得返回的角度(目前在 -180 和 +180 之间)。
heading = google.maps.geometry.spherical.computeHeading(
currentLocation,
destinationLocation
);
我还可以使用函数返回 alpha 来获取指南针的方向,该函数为我提供了从北方旋转的角度。
alpha = null;
//Check for ios property
if (event.webkitCompassHeading)
//window.confirm("iOS device - using webKit instead"); // report back that we are indeed on iOS
alpha = event.webkitCompassHeading;
//non iOS
else
alpha = event.alpha;
var locationIcon = myLocationMarker.get('icon');
locationIcon.rotation = 360 - alpha;
myLocationMarker.set('icon', locationIcon);
这给了我角度,然后帮助我旋转我的图标,这样我就可以看到我指向的方向是否正确
谁能告诉我数学/js 代码,然后得到我面对目的地的方式,给我一个返回的结果。我需要知道我是否面向目的地,然后我可以查看我是否面向错误的方式等。
我将尝试使用一些网络音频平移来帮助引导人们指出正确的方向。
谢谢
编辑:这是一张可能有助于澄清的图像。我确定这是一个简单的计算,但我无法弄清楚
【问题讨论】:
【参考方案1】:计算两个纬度/经度点之间的角度
private double angleFromCoordinate(double lat1, double long1, double lat2,
double long2)
double dLon = (long2 - long1);
double y = Math.sin(dLon) * Math.cos(lat2);
double x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1)
* Math.cos(lat2) * Math.cos(dLon);
double brng = Math.atan2(y, x);
brng = Math.toDegrees(brng);
brng = (brng + 360) % 360;
brng = 360 - brng; // count degrees counter-clockwise - remove to make clockwise
return brng;
================================================ =======================
使用 GoogleMap api:
<script src="https://maps.googleapis.com/maps/api/js?v=3&sensor=false&libraries=geometry"></script>
var point1 = new google.maps.LatLng(lat1, lng1);
var point2 = new google.maps.LatLng(lat2, lng2);
var heading = google.maps.geometry.spherical.computeHeading(point1,point2);
【讨论】:
【参考方案2】:我认为这只是数学,因为..
diff(Lat)/diff(lng) = tan(alpha)
那我猜你能弄清楚剩下的吗?
请注意,由于 GPS 精度问题,航向可能会发生根本变化。考虑同时使用compass data 和某种算法来简化大纲。
【讨论】:
老实说 - 脑死亡,似乎无法弄清楚如何计算 N 和 M 的角度。我认为这是因为返回的航向是从 -180 到 180,而指南针返回在 0 到360. @AshleyJamesBrown 你解决过这个问题吗?我也有方位和 alpha 值,但不知道如何将两者结合起来以正确方向旋转导航图标以上是关于Google Maps Javascript - 计算方向和指南针方向来计算朝向的方向的主要内容,如果未能解决你的问题,请参考以下文章
在 typescript/javascript 的 google.maps.Geocoder().geocode() 上使用全局变量
Google Maps JavaScript API 警告:NoApiKeys
Google Maps Javascript API、DirectionsService、国家列表