По сути, вам нужно определить, какой пропорцией экрана будет радиус круга.
В этом примере это всегда 10% ширины.
Учитывая это, затем вычислите расстояние между долготами экрана и разделите это расстояние на требуемую пропорцию (радиус).
Я подозреваю, что вам понадобятся разные пропорции в зависимости от ориентации.
Этот фрагмент кода рисует круг, радиус которого составляет 10% ширины экрана, а затем прослушивает движения камеры (включая масштабирование), чтобы настроить радиус на основе новых границ долготы.
Circle c;
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.getUiSettings().setZoomControlsEnabled(true);
LatLng p = new LatLng(39.171755, -86.510632);
LatLngBounds llb = mMap.getProjection().getVisibleRegion().latLngBounds;
LatLng ne = llb.northeast;
LatLng sw = llb.southwest;
double d = SphericalUtil.computeDistanceBetween(ne,new LatLng(ne.latitude,sw.longitude));
double r = (d/10);
c = mMap.addCircle(new CircleOptions().center(p).radius(r).strokeColor(Color.BLUE));
mMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() {
@Override
public void onCameraMove() {
LatLngBounds llb = mMap.getProjection().getVisibleRegion().latLngBounds;
LatLng ne = llb.northeast;
LatLng sw = llb.southwest;
double d = SphericalUtil.computeDistanceBetween(ne,new LatLng(ne.latitude,sw.longitude));
double r = (d/10);
c.setRadius(r);
}
});
}
Также обратите внимание, что кружок не является маркером - заголовок нуждается в обновлении (может помочь поисковикам в будущем.)