Создание настраиваемого наложения, в частности круга с радиусом (цветным) в Android MapBox GL

Создание настраиваемого наложения, в частности круга с радиусом (цветным) в Android MapBox GL. Это позволяет динамически изменять радиус с помощью панели поиска.

Я пытаюсь создать несколько пользовательских маркеров и использовал SimpleCircleView, но у меня возникли проблемы при попытке отобразить его в MapBox GL android, и это создало множество ошибок.

  1. Событие касания карты не отвечает, когда мой CircleOverlay отображается на карте
  2. Маркер не остается в своих координатах после увеличения или уменьшения масштаба.
  3. Обновление маркеров не работает, поэтому мне нужно удалить, а затем снова добавить маркер.
  4. Цвет не соответствует цвету, который я установил в маркере.

Я ограничу публикацию кода, потому что это мое репо и чтобы проблема была понятна.

При создании пользовательского оверлея мне нужно создать следующие классы:

  1. CircleMarkerView.java - Пользовательский вид маркера
  2. [CircleMarkerViewOptions.java] (https://github.com/spurdow/SimpleCircleView/blob/master/app/src/main/java/com/spurdow/circleviewtest/CircleMarkerViewOptions.java) - используется с CircleMarkerView
  3. SimpleCircleView. / a> - Это мой пользовательский вид для динамического круга, меняющего радиус и т. д.
  4. MainActivityMapBox - Вот куда все это положить

Это пример кода в репо.

введите здесь описание изображения

Кто-нибудь знает, как это сделать просто? Или есть другой способ динамического построения наложения? Или возможно ли динамически создать растровое изображение круга и преобразовать его в значок при изменении прогресса панели поиска?


person david    schedule 20.07.2016    source источник


Ответы (1)


1. Событие касания карты не отвечает, когда мой CircleOverlay отображается на карте
Это проблема, которую мы планируем решить в следующем выпуске, вы можете следить за прогрессом в этом здесь.

2. Маркер не остается в своих координатах после увеличения или уменьшения масштаба.
Это может быть связано с тем, что вы неправильно закрепили значок маркера с помощью .setAnchor() или вокруг него есть отступы. Для круга вам нужно привязать якорь по центру (используя 0,5f). Непосредственно перед предыдущей стабильной версией была обнаружена ошибка, из-за которой некорректно работала привязка . Если это проблема, используйте 4.2.0-SNAPSHOT.

3. Обновление маркеров не работает, поэтому мне нужно удалить и снова добавить маркер. Не могли бы вы подробнее рассказать об этой проблеме? Вы могли бы использовать

Marker marker = mapboxMap.addMarker(new MarkerViewOptions()...

Когда вам следует использовать:

MarkerView marker = mapboxMap.addMarker(new MarkerViewOptions()...

Это даст вам больше возможностей для обновления маркеров.

4. Цвет не соответствует цвету, который я установил в маркере.
Не могли бы вы пояснить, что вы имеете в виду?

Похоже, вы хотите сделать то, что делает этот пример, в testapp? Я бы следил за кодом, найденным там.

person cammace    schedule 21.07.2016
comment
на номер 3. Это потому, что мне нужно обновить радиус маркера, но он не обновляется, когда я обновляю MarkerView, поэтому мне нужно удалить и добавить его снова. - person david; 22.07.2016
comment
Возможно, это исправит мою проблему с тестовым приложением, но я все еще изучаю, как заставить изображение динамически изменяться во время выполнения. Но пока я буду ждать оверлея. Я тот, кто написал вам по электронной почте и на github. Спасибо за ваш ответ - person david; 22.07.2016