google地图中添加指南针图标
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); } @Override protected 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); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) {} @Override public void onSensorChanged(SensorEvent event) { mValues=event.values; invalidate(); } }