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() 上使用全局变量

JavaScript Google Maps API

Google Maps JavaScript API 警告:NoApiKeys

Google Maps Javascript API、DirectionsService、国家列表

Google Maps Javascript API 移动性能问题

具有自动完成功能的 Google Maps JavaScript API