0

我有一个带有指向特定位置的箭头的 ImageView 的 MapView。我通过旋转 ImageView 进行指向,通过 getOrientation() 计算指南针的方位(方向) - 使用 geoField.getDeclination() 的航向和使用 myLocation.bearingTo(finalDestiny) 的方位。

该算法完美运行,我让箭头准确指向我想要的位置。唯一的问题是,为了能够 getOrientation(),需要启用 Compass(),否则返回 NaN。同时,enableCompass() 在 MapView 上绘制默认的 google 指南针,我不想显示。

我该怎么做?可以使用传感器“手动”计算这个方位,所以我不需要使用 enableCompass()?

4

2 回答 2

2

您应该实现一个扩展 MyLocationOverlay 的类并在没有任何代码的情况下覆盖 drawCompass(),我只是尝试它并完美地工作。在您的活动中, enableCompass() 不会绘制指南针。

public class CustomMyLocation extends MyLocationOverlay {
//...


    @Override
    protected void drawCompass(Canvas canvas, float bearing) {
    }
}
于 2012-09-27T03:04:14.460 回答
1

我们可以手动计算轴承,两个位置之间的轴承可以通过

float bearing = mLoc.bearingTo(mLocTarget);
if(bearing<0){
bearing+=360;
}

可以使用传感器计算正常的罗盘方位:

float newDirection=0;
if(mSensors!=null)
newDirection=-mSensors[0];
if((newDirection-mCurDirection)> 180)
newDirection-=360;
else if((mCurDirection-newDirection)> 180)
newDirection+=360;
于 2012-09-11T06:47:56.310 回答