Android 无法将提名提供程序应用于() namignmpoiprovider poiProvider=新的namignmpoiprovider(); ArrayList POI=poiProvider.getPOICloseTo(startPoint,“电影院”,50,0.1); FolderOverlay POIMERKERS=新FolderOverlay(此); map.getOverlays().add(POI标记); Drawable POICON=getResources().getDrawable(R.Drawable.marker\u poi\u默认值); 用于(POI POI:POI){ 标记POIMERKER=新标记(地图); POIMERKER.setTitle(poi.mType); poi标记器固定接头(poi.M说明); poi标记器设置位置(poi.M位置); POIMERKER.setIcon(POICON); if(poi.mThumbnail!=null){ setImage(新的位图绘制(poi.mThumbnail)); } 添加(POIMERKER); }

Android 无法将提名提供程序应用于() namignmpoiprovider poiProvider=新的namignmpoiprovider(); ArrayList POI=poiProvider.getPOICloseTo(startPoint,“电影院”,50,0.1); FolderOverlay POIMERKERS=新FolderOverlay(此); map.getOverlays().add(POI标记); Drawable POICON=getResources().getDrawable(R.Drawable.marker\u poi\u默认值); 用于(POI POI:POI){ 标记POIMERKER=新标记(地图); POIMERKER.setTitle(poi.mType); poi标记器固定接头(poi.M说明); poi标记器设置位置(poi.M位置); POIMERKER.setIcon(POICON); if(poi.mThumbnail!=null){ setImage(新的位图绘制(poi.mThumbnail)); } 添加(POIMERKER); },android,osmdroid,nominatim,Android,Osmdroid,Nominatim,我得到了这个错误: 无法将提名提供程序中的提名提供程序(字符串)应用于() 我找到了这个答案,但它并没有解决我的问题:教程似乎已经过时了,因为不再有一个没有参数的构造函数用于NagnifiProvider。您需要指定用户代理,该代理将用于发送给提名服务提供商的标题中。有关更多详细信息,请参阅和 使用类似于: NominatimPOIProvider poiProvider = new NominatimPOIProvider(); ArrayList<POI> pois =

我得到了这个错误: 无法将提名提供程序中的提名提供程序(字符串)应用于()


我找到了这个答案,但它并没有解决我的问题:

教程似乎已经过时了,因为不再有一个没有参数的构造函数用于NagnifiProvider。您需要指定用户代理,该代理将用于发送给提名服务提供商的标题中。有关更多详细信息,请参阅和

使用类似于:

NominatimPOIProvider poiProvider = new NominatimPOIProvider();
    ArrayList<POI> pois = poiProvider.getPOICloseTo(startPoint, "cinema", 50, 0.1);
    FolderOverlay poiMarkers = new FolderOverlay(this);
    map.getOverlays().add(poiMarkers);
    Drawable poiIcon = getResources().getDrawable(R.drawable.marker_poi_default);
    for (POI poi:pois){
        Marker poiMarker = new Marker(map);
        poiMarker.setTitle(poi.mType);
        poiMarker.setSnippet(poi.mDescription);
        poiMarker.setPosition(poi.mLocation);
        poiMarker.setIcon(poiIcon);
        if (poi.mThumbnail != null){
            poiMarker.setImage(new BitmapDrawable(poi.mThumbnail));
        }
        poiMarkers.add(poiMarker);
    }

所以从你发布的链接来看,听起来好像我把我的应用程序包名放在了那里,对吧?我做到了,解决了这个问题。现在我在运行应用程序时得到了这个。java.lang.RuntimeException:无法启动活动组件信息{com.JEB.trailmaps/com.JEB.trailmaps.MainActivity}:android.os。NetworkOnMainThreadException@jamesburnison你不能在android的主线程上执行网络请求。NagnitimpoiProvider正在调用某些API,因此您无法在主线程上调用getPOICloseTo。这与osmdroid完全无关,它只是andriod开发的基础之一。见相关问题:废话。不幸的是,我对如何使用异步任务的理解很差。我不是每天都做这件事。我发现我喜欢在业余时间做的事情。在我使用它的很少几次中,我一直在努力使用它,现在仍然这样做。我刚刚修复了tuto,以便更改用户代理@james从一开始就跟随tuto(教程0),它解释了如何继续。
NominatimPOIProvider poiProvider = new NominatimPOIProvider("YourUserAgentSpecificForYourApplicationOrWhatever");