11

その Google マップ コンポーネントMapViewを Android アプリケーションで使用します。GPS 位置情報を使用して、自分の位置をドットで表示できます。しかし、代わりに、駆動方向 (ベアリング) を示す矢印を表示したいと思います。bearing値を使用して矢印の角度を取得できると思います。

どうやってやるの?

4

1 に答える 1

19

Location を取得したと仮定して、次のようにして方位を取得します。

float myBearing = location.getBearing();

オーバーレイを実装するには、ItemizedOverlayOverlayItemを使用します。Drawable を回転させる機能を追加するには、OverlayItem をサブクラス化する必要があります。何かのようなもの:

public BitmapDrawable rotateDrawable(float angle)
{
  Bitmap arrowBitmap = BitmapFactory.decodeResource(context.getResources(), 
                                                    R.drawable.map_pin);
  // Create blank bitmap of equal size
  Bitmap canvasBitmap = arrowBitmap.copy(Bitmap.Config.ARGB_8888, true);
  canvasBitmap.eraseColor(0x00000000);

  // Create canvas
  Canvas canvas = new Canvas(canvasBitmap);

  // Create rotation matrix
  Matrix rotateMatrix = new Matrix();
  rotateMatrix.setRotate(angle, canvas.getWidth()/2, canvas.getHeight()/2);

  // Draw bitmap onto canvas using matrix
  canvas.drawBitmap(arrowBitmap, rotateMatrix, null);

  return new BitmapDrawable(canvasBitmap); 
}

あとは、この新しい Drawable を OverlayItem に適用するだけです。これは setMarker() メソッドを使用して行われます。

于 2010-12-02T06:23:34.720 に答える