Circle上的setRadius在Google地图中提供了糟糕的用户体验

时间:2016-04-29 07:38:27

标签: android google-maps

我正在尝试实施.header-user-menu ul{ z-index:999; } 样本及其Google Maps中的内容:

Android Samples

问题在于,圆圈正在消失并出现,我记录了这个问题

Google Maps Sample problem

在我看来,该部分应该有效:

CircleDemoActivity

问题在于if (marker.equals(radiusMarker)) { radius = toRadiusMeters(centerMarker.getPosition(), radiusMarker.getPosition()); circle.setRadius(radius); return true; } 方法,但也许是一些解决方法。

问题

如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

几个月前,我不得不实施一个圆形动画,在一个标记下生长和收缩,告知我们的用户标记位置并不准确。

在第一个实现中,我使用了一个圆圈并遇到了同样的问题。 我最终使用带有圆形图像的GroundOverlay并且它没有闪烁。它可能只需要更多的数学来获得正确的半径。

我希望它能提供帮助:)

答案 1 :(得分:0)

一种解决方法是使用GroundOverlay而不是圆圈。 这是一个示例:

// The drawable to use for the circle
    GradientDrawable d = new GradientDrawable();
    d.setShape(GradientDrawable.OVAL);
    d.setSize(500,500);
    d.setColor(Color.BLUE);
    d.setStroke(10, Color.BLACK);

    Bitmap bitmap = Bitmap.createBitmap(d.getIntrinsicWidth()
            , d.getIntrinsicHeight()
            , Bitmap.Config.ARGB_8888);

    // Convert the drawable to bitmap
    Canvas canvas = new Canvas(bitmap);
    d.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
    d.draw(canvas);

    // Maximum radius of the circle
    final int radius = 1000;

    // Add the circle to the map
    final GroundOverlay circle = map.addGroundOverlay(new GroundOverlayOptions()
    .position(latLng, 2 * radius).image(BitmapDescriptorFactory.fromBitmap(bitmap)));

现在在你的代码中:

if (marker.equals(radiusMarker)) {
radius = toRadiusMeters(centerMarker.getPosition(), radiusMarker.getPosition());
circle.setDimensions(2 * radius);
return true;

}