我想在 Android 中的 Google Maps MapView 上方的图层上画一个圆圈。我的意思是 - 地图视图的中心有一个红色圆圈,但无论我移动我的地图 - 这个圆圈应该始终位于我的视图中心 - 类似于地图视图上方的一层。
你能告诉我怎么做吗?
谢谢!
我想在 Android 中的 Google Maps MapView 上方的图层上画一个圆圈。我的意思是 - 地图视图的中心有一个红色圆圈,但无论我移动我的地图 - 这个圆圈应该始终位于我的视图中心 - 类似于地图视图上方的一层。
你能告诉我怎么做吗?
谢谢!
使用 a FrameLayout
,它的第一个孩子将是MapView
,第二个孩子将是你的圈子(with Gravity
= CENTER)。
为什么不使用简单的覆盖?就像是:
public class MapDemo extends MapActivity {
MapView mMapView;
CircleOverlay mCOverlay;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GeoPoint mapCentrePoint = new GeoPoint(51500000, 0);
mMapView = (MapView) findViewById(R.id.mapview);
MapController mapCtrlr = mMapView.getController();
mapCtrlr.setZoom(8);
mapCtrlr.setCenter(mapCentrePoint);
List<Overlay> listOfOverlays = mMapView.getOverlays();
mCOverlay = new CircleOverlay(50.0f);
listOfOverlays.add(mCOverlay);
}
@Override
protected boolean isRouteDisplayed() {return false;}
public class CircleOverlay extends com.google.android.maps.Overlay {
Paint mPaint;
float mRadius;
public CircleOverlay(float radius) {
super();
mRadius = radius;
mPaint = new Paint();
mPaint.setColor(Color.RED);
mPaint.setStyle(Style.STROKE);
mPaint.setStrokeWidth(2);
}
@Override
public boolean draw(Canvas canvas, MapView mv, boolean shadow,
long when) {
canvas.drawCircle(mv.getWidth()/2, mv.getHeight()/2,
mRadius, mPaint);
return false;
}
}
}
.
使用surfaceview http://developer.android.com/reference/android/view/SurfaceView.html或FrameLayout http://developer.android.com/reference/android/widget/FrameLayout.html怎么样?