我正在尝试使MyLocationOverlay
指南针指向特定位置。我想显示从当前用户位置到指定位置的方向。到目前为止,我已经设法计算出一个方向并将其传递给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);
}
}
“有时指向正确的方向,但通常显示完全废话。”即使是破损的时钟也是一天两次:) –