googlemap中添加指南针图标
代码很简单:
/** * * @date Aug 29, 2012 * @fileName CompassView.java * */public class CompassView extends View implements SensorEventListener {private static final String TAG="CompassView";private Paint mPaint = new Paint(); private Path mPath = new Path();private SensorManager sm;private float[] mValues;private MapView mapView;/** * @param context */public CompassView(Context context,MapView mapView) {super(context);this.mapView=mapView;sm = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE); mPath.moveTo(0, -12); mPath.lineTo(-8, 15); mPath.lineTo(0, 12); mPath.lineTo(8, 15); mPath.close();}public void register(){sm.registerListener(this,sm.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_GAME);}public void unregister(){sm.unregisterListener(this);}public void addLayout(RelativeLayout layout){LayoutParams lp=new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);layout.addView(this);}@Overrideprotected void onDraw(Canvas canvas) {Paint paint = mPaint; canvas.drawColor(Color.TRANSPARENT); paint.setAntiAlias(true); paint.setColor(Color.TRANSPARENT); paint.setStyle(Paint.Style.FILL); if(MapManager.myGeoPoint!=null){ paint.setColor(Color.BLUE); Projection projection = mapView.getProjection(); Point point = projection.toPixels(MapManager.myGeoPoint, null); canvas.translate(point.x, point.y-10); } if (mValues != null) { if(this.getResources().getConfiguration().orientation ==Configuration.ORIENTATION_LANDSCAPE) { canvas.rotate(-90); } if(this.getResources().getConfiguration().orientation ==Configuration.ORIENTATION_PORTRAIT) { } canvas.rotate(-mValues[0]); } canvas.drawPath(mPath, mPaint);}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}@Overridepublic void onSensorChanged(SensorEvent event) { mValues=event.values; invalidate();}}