Google Maps Javascript - computeHeading和指南针方向来计算面向方向

问题描述 投票:5回答:2

对我的currentPosition和destinationPosition使用computeHeading()函数我可以得到返回的角度(tis当前介于-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);

这给了我角度,然后帮我旋转我的图标,以便我可以看到我是否指向正确的方式

有人能告诉我math / js代码然后得到我面对目的地的方式给我一个返回的结果。我需要知道我是否面向目的地,然后我可以看到我是否面临错误的方式等。

我将尝试使用一些网络音频平移来帮助指导人们指出正确的方式。

谢谢

编辑:这是一个可能有助于澄清的图像。我确定它是一个简单的计算,但我无法弄明白

javascript google-maps google-maps-api-3 compass direction
2个回答
3
投票

Calculate angle between two Latitude/Longitude points

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

=====================================================================

Using GoogleMap apis:

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

0
投票

我认为这只是数学,因为......

diff(Lat)/diff(lng) = tan(alpha)

然后我想你可以弄明白其余的?

请注意,由于GPS精度问题,航向可能会发生根本变化。考虑使用compass data和某种算法来简化大纲。

© www.soinside.com 2019 - 2024. All rights reserved.