我正在使用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
?
答案 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以创建此图块。