web-dev-qa-db-ja.com

運転方向に基づいてマーカーを回転させる

Googleマップマップに次のようなマーカーがあります。

pic

ユーザーが運転しているときは、運転方向に合わせて回転させたい。どうすればこれを達成できますか?おそらく以前の場所と現在の場所の座標を計算に使用する必要がありますが、その方法がわかりません。

11
Gintas_

GPSを使用してユーザーの位置を特定する場合、Locationで取得するonLocationChangedオブジェクトには bearing が含まれます。

2つの座標しかない場合(たとえば、ネットワークロケーションプロバイダーからの座標しかない場合)、Location.bearingTo()を使用して2つの座標の方位を計算できます。

_Location prevLoc = ... ;
Location newLoc = ... ;
float bearing = prevLoc.bearingTo(newLoc) ;
_

方位がある場合は、 MarkerOptions.rotation() を使用してマーカーの回転を設定できます。

_mMap.addMarker(new MarkerOptions()
                    .position(markerLatLng)
                    .icon(BitmapDescriptorFactory.fromResource(R.drawable.map_marker))
                    .anchor(0.5f, 0.5f)
                    .rotation(bearing)
                    .flat(true));
_

anchor を回転させたいポイントに設定する必要があります。また、マーカーに設定した位置に設定したいポイントでもあります。 (0.5、0.5)は画像の中心です。

38
hunyadym