首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Osmdroid脱机文件

Osmdroid脱机文件
EN

Stack Overflow用户
提问于 2013-04-07 17:14:46
回答 3查看 5.5K关注 0票数 4

我有一个osmdroid映射,并且我想从MOBAC的osmdroid zip或gemf文件中加载离线磁贴。我查看了一下,无论我走到哪里,它都说只需要把它放在sdcard/osmdroid中。但是它不工作,我需要在代码中修改一些东西吗?

代码语言:javascript
复制
 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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-02 03:04:53

我也遇到过同样的问题,我使用Mapnik的在线磁贴解决了这个问题。这样,我的应用程序就在我的移动设备(phone/osmdroid/tile/Mapnik)中创建了路径。

代码语言:javascript
复制
    mMapView.setTileSource(TileSourceFactory.Mapnik);

您还可以通过将以下内容添加到xml文件和mapview中来添加平铺资源:

代码语言:javascript
复制
    tilesource="Mapnik"

不要忘记通过添加以下内容来指定您不希望应用程序下载数据:

代码语言:javascript
复制
      mMapView.setUseDataConnection(false);

完成此操作后,您可以让应用程序使用脱机磁贴,只需遵循以下指南:http://www.haakseth.com/?p=30

票数 2
EN

Stack Overflow用户

发布于 2013-04-13 00:31:24

使用MapTileFileArchiveProvider时,您的代码是正确的:

https://code.google.com/p/osmdroid/source/browse/trunk/osmdroid-android/src/org/osmdroid/tileprovider/MapTileProviderBasic.java?r=681

您应该验证zip的路径和zip文件中的目录结构。

压缩文件应该放在OSMDROID_PATH (/mnt/sdcard/osmdroid)中。这就是搜索zip文件的位置:

代码语言:javascript
复制
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/...

票数 1
EN

Stack Overflow用户

发布于 2020-03-11 19:05:09

我也遇到了让它工作的问题。我的设置是用Mapnik离线Osmdroid。它现在可以工作了。我使用的代码如下所示。

首先需要在build.gradle中包含OSMDroid (模块:app)

代码语言:javascript
复制
implementation 'org.osmdroid:osmdroid-android:6.1.5'

在添加此行后执行Gradle同步。

我的主要活动是这样的:

代码语言:javascript
复制
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包含以下视图:

代码语言:javascript
复制
<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")。

祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15860792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档