简体   繁体   English

将标记添加到OSMdroid 5.5地图

[英]Add marker to OSMdroid 5.5 map

I want to add markers to my OSMdroid map. 我想在我的OSMdroid地图上添加标记。 I am using OSMdroid version 5.5 . 我正在使用OSMdroid 5.5版 The official tutorial suggests the following code: 官方教程建议以下代码:

//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);

However, I don't know where to get the mResourceProxy object from. 但是,我不知道从哪里获取mResourceProxy对象。 All websites I found about this topic (including OSMdroid's GitHub page) are making use of the DefaultResourceProxyImpl class, which is deprecated since version 5.2. 我找到的有关该主题的所有网站(包括OSMdroid的GitHub页面)都使用DefaultResourceProxyImpl类,该类从5.2版开始不推荐使用。

Does anyone know how to add marker versions >= 5.2? 有谁知道如何添加标记版本> = 5.2?

Okay, so I found out how to use it. 好的,所以我找到了使用方法。 The ItemizedOverlayWithFocus doesn't require a ResourceProxy at all. ItemizedOverlayWithFocus完全不需要ResourceProxy。 So you can use one of the following constructors: 因此,您可以使用以下构造函数之一:

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) { ... }

This is how I adjusted the code from my question to make it work: 这是我从问题中调整代码以使其起作用的方式:

//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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM