我有一个osmdroid映射,并且我想从MOBAC的osmdroid zip或gemf文件中加载离线磁贴。我查看了一下,无论我走到哪里,它都说只需要把它放在sdcard/osmdroid中。但是它不工作,我需要在代码中修改一些东西吗?
public class Map extends Activity {
private IMapView mMapView;
private static IMapController mMapController;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
mMapView = (MapView) findViewById(R.id.mapview);
((MapView) mMapView).setBuiltInZoomControls(true);
mMapController = mMapView.getController();
mMapController.setZoom(13);
GeoPoint geoPecs = new GeoPoint(46.070833,18.233056);
mMapController.setCenter(geoPecs);
mProvider = new MapTileProviderBasic(getApplicationContext());
mCustomTileSource = new XYTileSource("Turaterkep", null, 13, 15, 256, ".png", "http://users.atw.hu/perzsa/map/Turaterkep/");
mProvider.setTileSource(mCustomTileSource);
mTilesOverlay = new TilesOverlay(mProvider,this.getBaseContext());
mMapView.getOverlays().add(mTilesOverlay);更新:我设法从在线加载了包含示例到osmdroid的瓦片,我也更新了代码,我想我必须从这个示例开始,也许我可以从localhost加载?我会退房的
图片来源:http://i.stack.imgur.com/CoZT1.png
发布于 2014-04-02 03:04:53
我也遇到过同样的问题,我使用Mapnik的在线磁贴解决了这个问题。这样,我的应用程序就在我的移动设备(phone/osmdroid/tile/Mapnik)中创建了路径。
mMapView.setTileSource(TileSourceFactory.Mapnik);您还可以通过将以下内容添加到xml文件和mapview中来添加平铺资源:
tilesource="Mapnik"不要忘记通过添加以下内容来指定您不希望应用程序下载数据:
mMapView.setUseDataConnection(false);完成此操作后,您可以让应用程序使用脱机磁贴,只需遵循以下指南:http://www.haakseth.com/?p=30
发布于 2013-04-13 00:31:24
使用MapTileFileArchiveProvider时,您的代码是正确的:
您应该验证zip的路径和zip文件中的目录结构。
压缩文件应该放在OSMDROID_PATH (/mnt/sdcard/osmdroid)中。这就是搜索zip文件的位置:
private void findArchiveFiles() {
mArchiveFiles.clear();
if (!getSdCardAvailable()) {
return;
}
// path should be optionally configurable
final File[] z = OSMDROID_PATH.listFiles();
for (final File file : z) {
final IArchiveFile archiveFile = ArchiveFileFactory.getArchiveFile(file);
if (archiveFile != null) {
mArchiveFiles.add(archiveFile);
}
}
}在您的zip中,不要忘记将tile源名称设置为基目录:
/tilesourcename/zoomlevel/...
发布于 2020-03-11 19:05:09
我也遇到了让它工作的问题。我的设置是用Mapnik离线Osmdroid。它现在可以工作了。我使用的代码如下所示。
首先需要在build.gradle中包含OSMDroid (模块:app)
implementation 'org.osmdroid:osmdroid-android:6.1.5'在添加此行后执行Gradle同步。
我的主要活动是这样的:
public class MainActivity extends AppCompatActivity {
MapView map = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = getIntent();
map = findViewById(R.id.map);
map.setTileSource(TileSourceFactory.MAPNIK);
map.setUseDataConnection(false);
map.setMinZoomLevel(7.0);
map.setMaxZoomLevel(18.0);
IMapController mapController = map.getController();
mapController.setZoom(9.0);
map.invalidate();
GeoPoint goToLocation = new GeoPoint(41.80937753568571, -5.739056020777395);
mapController.setCenter(goToLocation);
}
}activity .xml包含以下视图:
<org.osmdroid.views.MapView android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
tilesource="Mapnik" />我的包含地图切片的.zip文件位于/storage/emulated/0/osmdroid中
(我无法从位置/sdcard/osmdroid让它工作)
你的.zip文件的内部结构应该是/Mapnik/x/y/z.png,这是区分大小写的!
.zip文件的名称似乎并不重要,您甚至可以有多个这样的文件。
在你第一次编译和安装之后,你可能不得不进入Android上的应用程序属性,并授予应用程序访问“存储”的权限(不确定确切的翻译,我的手机是西班牙语的,它被称为"Almacenamiento")。
祝好运!
https://stackoverflow.com/questions/15860792
复制相似问题