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();
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值