如何在MyLocationOverlay中为“你在这里”点使用自定义位图?

我已经倾倒了文档并且无法解决这个问题。 它甚至可能吗?

请看这个

看起来正确的机制是扩展MyLocationOverlay然后覆盖drawMyLocation()受保护的方法。

以下使用箭头显示“你”的位置以及“你”指向的方式:

 package com.example; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Point; import android.location.Location; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapView; import com.google.android.maps.MyLocationOverlay; public class MyCustomLocationOverlay extends MyLocationOverlay { private Context mContext; private float mOrientation; public MyCustomLocationOverlay(Context context, MapView mapView) { super(context, mapView); mContext = context; } @Override protected void drawMyLocation(Canvas canvas, MapView mapView, Location lastFix, GeoPoint myLocation, long when) { // translate the GeoPoint to screen pixels Point screenPts = mapView.getProjection().toPixels(myLocation, null); // create a rotated copy of the marker Bitmap arrowBitmap = BitmapFactory.decodeResource( mContext.getResources(), R.drawable.arrow_green); Matrix matrix = new Matrix(); matrix.postRotate(mOrientation); Bitmap rotatedBmp = Bitmap.createBitmap( arrowBitmap, 0, 0, arrowBitmap.getWidth(), arrowBitmap.getHeight(), matrix, true ); // add the rotated marker to the canvas canvas.drawBitmap( rotatedBmp, screenPts.x - (rotatedBmp.getWidth() / 2), screenPts.y - (rotatedBmp.getHeight() / 2), null ); } public void setOrientation(float newOrientation) { mOrientation = newOrientation; } } 

我对previuos代码进行了一些更改,以使其正常工作,因为箭头指向错误的方向并向相反方向旋转。

我变了

 matrix.postRotate(mOrientation); 

对于

 matrix.postRotate(this.getRotation()); 

并添加到最后:

 mapView.postInvalidate(); 

在更改时重绘箭头