2016-12-11 5 views
2

Я хочу добавить маркеры на свою карту OSMdroid. Я использую OSMdroid версии 5.5. official tutorial предлагает следующий код:Добавить маркер в OSMdroid 5.5 map

//your items 
ArrayList<OverlayItem> items = new ArrayList<OverlayItem>(); 
items.add(new OverlayItem("Title", "Description", new GeoPoint(0.0d,0.0d))); // Lat/Lon decimal degrees 

//the overlay 
ItemizedOverlayWithFocus<OverlayItem> mOverlay = new ItemizedOverlayWithFocus<OverlayItem>(items, 
    new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() { 
    @Override 
    public boolean onItemSingleTapUp(final int index, final OverlayItem item) { 
    //do something 
     return true; 
    } 
    @Override 
    public boolean onItemLongPress(final int index, final OverlayItem item) { 
     return false; 
    } 
}, mResourceProxy); // <----- where to get this object from? 
mOverlay.setFocusItemsOnTap(true); 

mMapView.getOverlays().add(mOverlay); 

Однако, я не знаю, где получить mResourceProxy объект из. Все сайты, которые я нашел об этой теме (включая страницу GitHub на OSMdroid), используют класс DefaultResourceProxyImpl, который устарел с версии 5.2.

Кто-нибудь знает, как добавить версии маркеров> = 5.2?

ответ

3

Хорошо, поэтому я узнал, как его использовать. ItemizedOverlayWithFocus не требует ResourceProxy вообще. Таким образом, вы можете использовать один из следующих конструкторов:

public ItemizedOverlayWithFocus(Context pContext, List<Item> aList, OnItemGestureListener<Item> aOnItemTapListener) { ... } 

public ItemizedOverlayWithFocus(List<Item> aList, OnItemGestureListener<Item> aOnItemTapListener, Context pContext) { ... } 

public ItemizedOverlayWithFocus(List<Item> aList, Drawable pMarker, Drawable pMarkerFocused, int pFocusedBackgroundColor, OnItemGestureListener<Item> aOnItemTapListener, Context pContext) { ... } 

Это, как я настроил код от моего вопроса, чтобы заставить его работать:

//your items 
ArrayList<OverlayItem> items = new ArrayList<OverlayItem>(); 
items.add(new OverlayItem("Title", "Description", new GeoPoint(0.0d,0.0d))); // Lat/Lon decimal degrees 

//the overlay 
ItemizedOverlayWithFocus<OverlayItem> mOverlay = new ItemizedOverlayWithFocus<OverlayItem>(
    this, items, // <--------- added Context this as first parameter 
    new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() { 
    @Override 
    public boolean onItemSingleTapUp(final int index, final OverlayItem item) { 
    //do something 
     return true; 
    } 
    @Override 
    public boolean onItemLongPress(final int index, final OverlayItem item) { 
     return false; 
    } 
}); // <----- removed the mResourceProxy parameter 
mOverlay.setFocusItemsOnTap(true); 

mMapView.getOverlays().add(mOverlay); 
+1

Спасибо за чего это, я буду обновлять учебник – spy

+0

Второй конструктор работал для меня. Благодарю. Обновите учебник. Я искал несколько часов, чтобы получить этот –

+2

обновлено – spy