1

不要与在地图视图上画一个圆圈相混淆。我正在努力完成以下工作。

在此处输入图像描述

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

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

谢谢

4

3 回答 3

1

我发现的一种解决方法是通过操作CardViewcornderRadius属性并将 MapView 包装在其中。将 cardCornerRadius 设置为 layout_width 和 layout_height 的一半创建一个圆形 View,您可以在其中添加 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>
于 2016-04-27T11:29:37.373 回答
0

你可以玩画布。圆角 MapView 参见以下链接:-

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

于 2012-05-16T05:07:43.277 回答
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);
于 2012-05-16T05:08:22.363 回答