Intereting Posts
Как изменить цвет текста по умолчанию с помощью настраиваемой темы? Значок навигационного ящика не отображается (панель действий Шерлока) Разбор массива объектов JSON с использованием Jackson 2.0 Android EditText view Плавающая подсказка в дизайне материалов Есть некоторая ошибка при компоновке загрузки Android, но не эффективна при запуске Перечислите активность с помощью заголовка, нижнего колонтитула и опустошите все видимые Robolectric раздувает пользовательские представления для тестов Что означает pivotX и значение в анимации Android? Как разбирать этот массив JSON в андроиде Ссылка, извлекаемая из строкового массива в android Изменение стиля CalendarView Как указать файл заголовка c в файле android.mk Скрыть значок переключателя, но не текст Внедрение Imageview Rotation с ограничением экрана в классе ниже Не удалось установить драйвер USB для Android на Windows 7

SetRadius on Circle дает пользователям плохой опыт работы на Картах Google

Я пытаюсь реализовать что-то вроде примеров Google Maps и их CircleDemoActivity :

Образцы Android

Проблема в том, что круг исчезает и появляется, и я записал эту проблему

Проблема с образцом Карт Google

По моему мнению, эта часть должна работать:

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

И проблема setRadius методом setRadius , но, возможно, это обходное решение.

Вопрос

Как это исправить?

Solutions Collecting From Web of "SetRadius on Circle дает пользователям плохой опыт работы на Картах Google"

Несколько месяцев назад мне пришлось реализовать анимацию круга, растущего и сжимающегося под маркером, чтобы сообщить нашему пользователю, что местоположение маркера точно не известно.

В первой реализации я использовал круг и имел ту же проблему. Я закончил использование GroundOverlay с круговым изображением, и он не мигает. Для получения правильного радиуса может потребоваться больше математических вычислений.

Надеюсь, это может помочь 🙂

Одним из способов было бы использовать 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; 

}