Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向OSMdroid 5.5映射添加标记_Java_Android_Openstreetmap_Osmdroid - Fatal编程技术网

Java 向OSMdroid 5.5映射添加标记

Java 向OSMdroid 5.5映射添加标记,java,android,openstreetmap,osmdroid,Java,Android,Openstreetmap,Osmdroid,我想向OSMdroid映射添加标记。我使用的是OSMdroid版本5.5。建议使用以下代码: //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 overla

我想向OSMdroid映射添加标记。我使用的是OSMdroid版本5.5。建议使用以下代码:

//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对象。我发现的所有关于此主题的网站,包括OSMdroid的GitHub页面,都在使用DefaultResourceProxyImpl类,该类自5.2版以来就被弃用了


有人知道如何添加标记器版本>=5.2吗?

好的,所以我找到了如何使用它。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);

谢谢你提出这个问题,我将更新教程。第二个构造函数为我工作。谢谢请更新教程。我搜索了几个小时才得到这个答案,现在官方教程既没有上下文也没有代理-只有两个参数。但是ItemizedOverlayWithFocus构造函数仍然需要3。。。