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方法,但也许是一些解决方法。

如何解决这个问题?

  • 触摸infoWindow适配器时删除高亮显示
  • 获取用户当前位置周围的地点列表
  • 在Google地图Android V2中触发地图事件(如点击标记)
  • 如何在Android中将标记设置为Google地图标记?
  • 如何捕捉地图平移和缩放真的完成了?
  • Android中的融合位置提供程序
  • 错误膨胀类com.google.android.maps.MapView
  • 关注React Native AirBnb的MapView上的用户位置
  • 几个月前,我必须实现一个圆圈的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; 

    }