Circle上的setRadius在Google地图中给用户带来不好的体验

我试图实现类似于Google Maps样本和他们的CircleDemoActivity

Android示例

问题是,这个圈子正在消失,出现,我logging了这个问题

Google Maps示例问题

在我看来,这部分应该工作:

 if (marker.equals(radiusMarker)) { radius = toRadiusMeters(centerMarker.getPosition(), radiusMarker.getPosition()); circle.setRadius(radius); return true; } 

问题是setRadius方法,但也许是一些解决方法。

如何解决这个问题?

Solutions Collecting From Web of "Circle上的setRadius在Google地图中给用户带来不好的体验"

几个月前,我必须实现一个圆圈的animation,这个圆圈正在成长和缩小到一个标记之下,以告知用户标记的位置并不准确。

在第一个实现中,我使用了一个圆,并有相同的问题。 我结束了使用一个圆形图像的GroundOverlay ,它不闪烁。 它可能只需要更多的math来获得正确的半径。

我希望它可以帮助:)

一种解决方法是使用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; 

}