使“我的位置叠加”指南针指向特定位置



我正在尝试MyLocationOverlay指南针指向特定位置。我想显示从当前用户位置到给定位置的方向。到目前为止,我已经设法计算出一个方向并将其传递给MyLocationOverlay.但是指南针箭头开始混乱地指向不同的位置。有时它指向正确的方向,但通常它完全是胡说八道。

有没有办法让指南针正常工作?

这就是我计算活动
方向的方式

    @Override
    public void onSensorChanged(SensorEvent event) {
        if(location != null && carOverlay.size() > 0 
                && !map.getUserOverlay().isPointingToNorth()) {
            float azimuth = event.values[0];
            azimuth = azimuth * 180 / (float) Math.PI;
            GeomagneticField geoField = new GeomagneticField(
                    Double.valueOf(location.getLatitude()).floatValue(),
                    Double.valueOf(location.getLongitude()).floatValue(),
                    Double.valueOf(location.getAltitude()).floatValue(),
                    System.currentTimeMillis());
            azimuth += geoField.getDeclination();
            GeoPoint point = carOverlay.getItem(0).getPoint();
            Location target = new Location(provider);
            float lat = (float) (point.getLatitudeE6() / 1E6f);
            float lon = (float) (point.getLongitudeE6() / 1E6f);
            target.setLatitude(lat);
            target.setLongitude(lon);
            float bearing = location.bearingTo(target);
            float direction = azimuth - bearing;
            map.getUserOverlay().putCompassDirection(direction);
        }
    }

这是我的自定义叠加
中的覆盖方法

@Override
    protected void drawCompass(Canvas canvas, float bearing) {
        if(pointToNorth) {
            super.drawCompass(canvas, bearing);
        }
        else {
            super.drawCompass(canvas, compassDirection);
        }
    }

你为什么要自己计算你的"方位/方位角"?MyLocationOverlay 按住方法 getOrientation() 以提供方位角。我肯定会原封不动onSensorChanged,让MyLocationOverlay为你计算一下。通常,要正确绘制指南针,您只需拨打enableCompass()

相关内容

  • 没有找到相关文章

最新更新