如何将mapview渲染为圆圈?

时间:2012-05-16 04:51:26

标签: android android-mapview

不要与在mapview上绘制圆圈相混淆。我正在努力完成以下任务。

enter image description here

我应该,以及如何: a)在另一个View上创建MapView作为圆形视图? b)渲染MapView全屏并用透明圆圈覆盖另一个视图?

我不确定这些选项是否可行,我认为它们是。如果它有帮助,作为用户工作流程的一部分,不透明区域将有几个按钮但最终会消失,用户将留下全屏幕地图进行交互。

由于

3 个答案:

答案 0 :(得分:1)

我找到的解决方法是操纵CardView cornderRadius属性并将MapView包装在其中。将cardCornerRadius设置为l ayout_width layout_height 的一半将创建一个圆形视图,您可以在其中添加MapView。如果您不想要阴影,请将cardElevation设置为0dp。

这是代码示例

<android.support.v7.widget.CardView
    android:layout_width="200dp"
    android:layout_height="200dp"
    app:cardCornerRadius="100dp">

    <com.google.android.gms.maps.MapView
      android:layout_width="match_parent"
      android:layout_height="match_parent"/>

  </android.support.v7.widget.CardView>

答案 1 :(得分:0)

您可以使用画布。请参阅以下链接以获得圆角MapView: -

http://blog.blundell-apps.com/rounded-corners-mapview/

答案 2 :(得分:0)

试试此代码

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mapView = (MapView) findViewById(R.id.mapview);
    MapController mc = mapView.getController();
    MyLocationOverlay myLocationOverlay = new MyLocationOverlay(MainMap.this, mapView);
    mapView.getOverlays().add(myLocationOverlay);
    mc.animateTo( new GeoPoint(lat, lng));
    mc.setZoom(15);
    mapView.invalidate();
}

别忘了添加overlay.enableMyLocation();在onresume()和overlay.disableMyLocation();在暂停

如果你想在你周围绘制圆圈而不是上面的代码,你可以使用下面的示例代码:

Point screenPnts =new Point();
GeoPoint curr_geopoint = new GeoPoint((int)(location.getLatitude()*1E6),(int)(location.getLongitude()*1E6));
mapview.getProjection().toPixels(curr_geopoint, screenPnts);
canvas.drawCircle(screenPnts.x, screenPnts.y, 15, paint);