Использование ItemizedOverlay и OverlayItem в Android Beta 0.9

Кому-нибудь удалось использовать ItemizedOverlays в Android Beta 0.9? Я не могу заставить его работать, но я не уверен, что я сделал что-то не так или эта функция еще недоступна.

Я пытался использовать классы ItemizedOverlay и OverlayItem. Их предполагаемая цель - имитировать маркеры карты (как показано в Google Maps Mashups), но у меня были проблемы с их отображением на карте.

Я могу добавить свои собственные накладки, используя аналогичную технику, только ItemizedOverlays не работает.

После того, как я реализовал свой собственный ItemizedOverlay (и переопределил createItem), создание нового экземпляра моего класса, похоже, работает (я могу извлечь из него OverlayItems), но добавление его в список Overlay карты не заставляет его выглядеть так, как должно.

Это код, который я использую для добавления класса ItemizedOverlay в качестве Overlay к моему MapView.

// Add the ItemizedOverlay to the Map
private void addItemizedOverlay() {
  Resources r = getResources();
  MapView mapView = (MapView)findViewById(R.id.mymapview);
  List<Overlay> overlays = mapView.getOverlays();

  MyItemizedOverlay markers = new MyItemizedOverlay(r.getDrawable(R.drawable.icon));
  overlays.add(markers);

  OverlayItem oi = markers.getItem(0);
  markers.setFocus(oi);
  mapView.postInvalidate();
}

Где MyItemizedOverlay определяется как:

public class MyItemizedOverlay extends ItemizedOverlay<OverlayItem> {
  public MyItemizedOverlay(Drawable defaultMarker) {
    super(defaultMarker);
    populate();
  }

  @Override
  protected OverlayItem createItem(int index) {
    Double lat = (index+37.422006)*1E6;
    Double lng = -122.084095*1E6;
    GeoPoint point = new GeoPoint(lat.intValue(), lng.intValue());

    OverlayItem oi = new OverlayItem(point, "Marker", "Marker Text");
    return oi;
  }

  @Override
  public int size() {
    return 5;
  } 
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
57
0
24 458
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Для полноты картины я повторю обсуждение сообщения Рето на Группы Android здесь.

Кажется, что если вы установите границы для своего рисования, это сделает трюк:

Drawable defaultMarker = r.getDrawable(R.drawable.icon);

// You HAVE to specify the bounds! It seems like the markers are drawn
// through Drawable.draw(Canvas) and therefore must have its bounds set
// before drawing.
defaultMarker.setBounds(0, 0, defaultMarker.getIntrinsicWidth(),
    defaultMarker.getIntrinsicHeight());

MyItemizedOverlay markers = new MyItemizedOverlay(defaultMarker);
overlays.add(markers);

Кстати, вышесказанное беззастенчиво скопировано из демо на MarcelP.info. Кроме того, это хорошо как.

это только я или твой последний лайк пуст?

Reno 23.01.2011 12:48

пытаться :

Drawable defaultMarker = r.getDrawable(R.drawable.icon);

defaultMarker.setBounds(0, 0, defaultMarker.getIntrinsicWidth(),
    defaultMarker.getIntrinsicHeight());

MyItemizedOverlay markers = new MyItemizedOverlay(defaultMarker);
overlays.add(markers);

Другие вопросы по теме