2015-05-15 22 views
0

我工作的OSMdroid库,并想让它offline所以我用这个代码为什么osmdroid无法在离线模式下工作(多个问题)?

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(); 
     } 
    } 
} 

,而不是在给定的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

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

+0

请不要一次询问多个问题。你有离线[平铺](https://wiki.openstreetmap.org/wiki/Tiles)吗?没有瓷砖,你不能用osmdroid显示离线地图。关于如何离线使用osmdroid,已经有很多问题和疑问,所以请在提问时提出具体问题。 – scai

回答

1

对于离线影像显示,你确定你有存储在/mnt/sdcard/osmdroid/离线地图图块.ZIP-file(或者您的设备的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"); 

因此,大家可以看到,你只需要拥有osmdroid -directory在你的SD卡的文件夹,一切都应该工作得很好。

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

相关问题