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);
}
}
"때로는 올바른 방향을 가리키지 만 보통 말도 안되는 소리를냅니다." 깨진 시계조차도 하루 두 번 맞습니다. –