我正在嘗試使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);
}
}
「有時指向正確的方向,但通常顯示完全廢話。」即使是破損的時鐘也是一天兩次:) –