为什么osmdroid无法在离线模式下工作(多个问题)?

时间:2015-05-15 17:20:42

标签: java android openstreetmap osmdroid

我正在使用OSMdroid库,并希望将其设为offline,因此我使用了此代码

 mMapView.setUseDataConnection(false);

但在这种情况下它甚至不会显示除图形页面之外的地图。但当我将boolean更改为true时,它又开始工作。

  

那么我如何让它完全脱机工作?

我也试图获得poi所以我有以下代码

 geoPoint= new GeoPoint(37.439974,-119.003906);
 double north = 84;
    double east = -180;
    double south = -84;
    double west = 180;
    boundingBoxE6 = new BoundingBoxE6(north, east, south, west);
    mMapView.setScrollableAreaLimit(boundingBoxE6);
    mMapView.setMultiTouchControls(true);
    Marker marker= new Marker(mMapView,mResourceProxy);
    marker.setPosition(geoPoint);
    mMapView.getOverlays().add(marker);
    poiMarkers = new FolderOverlay(getActivity());
    new connection().execute();
    mMapView.invalidate();


public class connection extends AsyncTask{

    @Override
    protected Object doInBackground(Object[] objects) {
        NominatimPOIProvider poiProvider = new NominatimPOIProvider();
        pois=poiProvider.getPOICloseTo(geoPoint,"atm",50,1000);
        return pois;
    }

    @Override
    protected void onPostExecute(Object o) {
        super.onPostExecute(o);
        mMapView.getOverlays().add(poiMarkers);
        Drawable poiIcon = getResources().getDrawable(R.drawable.marker_poi_default);
        if (o != null) {
            for (POI poi : pois) {
                Marker poiMarker = new Marker(mMapView);
                poiMarker.setTitle(poi.mType);
                poiMarker.setSnippet(poi.mDescription);
                poiMarker.setPosition(poi.mLocation);
                poiMarker.setIcon(poiIcon);
                poiMarkers.add(poiMarker);
            }
        }else{
            Toast.makeText(getActivity(),"null",Toast.LENGTH_SHORT).show();
        }
    }
}
  

但是我没有在给定的poi上获得geopint,而是在其他地方得到它,每次我的意思是我改变的代码,我不会在任何其他地方得到poi除此之外

http://nominatim.openstreetmap.org/search?format=json&q=[atm]&limit=50&bounded=1&viewbox=-1119.003906,1037.439974,880.996094,-962.560026
  

是否可以在离线模式下访问poi

1 个答案:

答案 0 :(得分:1)

对于显示的离线图块,您确定在.ZIP-file中存储了离线地图图块/mnt/sdcard/osmdroid/(或者设备的SD卡的路径是什么,它只需要在此文件夹中在名为osmdroid)的子目录中?

可以在这里找到帮助我的好教程:http://www.haakseth.com/?p=30

如果没有互联网连接,OSMdroid TileSource将自动查找此.ZIP-file以从中检索切片。在OpenStreetMapTileProviderConstants类中有这段代码:

/** Base path for osmdroid files. Zip files are in this folder. */
public static final File OSMDROID_PATH = new File(Environment.getExternalStorageDirectory(),
        "osmdroid");

你可以看到,你只需要在SDcard文件夹中有osmdroid - 目录,一切都应该可以正常工作。

如果您还没有地图图块.ZIP,请查看Mobile Atlas Creator以创建此图块。