[英]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.