OSMdroid добавляет пользовательские значки в ItemizedOverlay

Я использую класс ItemizedIconOverlay, и в настоящее время я отображаю события на карте вместе с позицией пользователя с тем же значком по умолчанию.

Как изменить набор значков для каждого наложения?

Есть ли что-то похожее на пример google.maps:

    drawable = getResources().getDrawable(R.drawable.marker);
    drawable3 = getResources().getDrawable(R.drawable.disruption);
    drawable2 = getResources().getDrawable(R.drawable.marker_me);

    itemizedOverlay = new MyItemizedOverlay(drawable, mapView);
    itemizedOverlay2 = new MyItemizedOverlay(drawable2, mapView);
    itemizedOverlay3 = new MyItemizedOverlay(drawable3, mapView);

У меня у каждого itemizedOverlay был свой маркер...

Как мне это сделать с помощью Open Street Maps?

mResourceProxy = new DefaultResourceProxyImpl(getApplicationContext());
this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(mItems, new Glistener(), mResourceProxy);

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


person bubbly    schedule 10.05.2012    source источник


Ответы (1)


Предположительно ваши mItems представляют собой ArrayList OverlayItems, созданный следующим образом:

mItems = new ArrayList<OverlayItem>();

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

OverlayItem olItem = new OverlayItem("Here", "SampleDescription", point);
Drawable newMarker = this.getResources().getDrawable(R.drawable.mymarker);
olItem.setMarker(newMarker);
mItems.add(olItem);

где mymarker - это .png в папке с чертежами.

Обновить — чтобы установить маркер по умолчанию для всего наложения, измените

this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(mItems, new Glistener(), mResourceProxy);

to

this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(mItems, newMarker, new Glistener(), mResourceProxy);

где newMarker по-прежнему

person NickT    schedule 10.05.2012
comment
Но можно ли добавить маркер по умолчанию для всего наложения? Подобно itemizedOverlay = new MyItemizedOverlay (drawable, mapView); а затем каждый элемент, добавленный в этот оверлей, получает определенный маркер. - person bubbly; 10.05.2012
comment
Да, похоже, есть еще один доступный конструктор, который также принимает маркер по умолчанию. Я отредактирую свой ответ с обновлением - person NickT; 10.05.2012
comment
Проблема, с которой я сталкиваюсь, заключается в том, что мои пользовательские маркеры выглядят очень большими:/ - person AlvaroSantisteban; 14.12.2013