【问题标题】:Osmdroid, use of different offline mapsOsmdroid,使用不同的离线地图
【发布时间】:2015-09-15 15:58:15
【问题描述】:

我有一个带有 Osmdroid-MapView 的应用程序,其数据存储在设备上的非地图中:/mnt/sdcard/osmdroid/tiles.zip

压缩文件的结构:

+-- MapquestOSM
+-- 10
¦ +-- 550
¦ +-- 335.png
...

我的目标:我想存储不同的离线地图,然后可以 在程序中选择。

我的问题:我必须以什么形式将地图存储在 osmdroid 文件夹中,如何告诉 Osmdroid 我的选择?

部分来源:

protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  MapView mapView = (MapView) findViewById(R.id.mapview);
  mapView.setClickable(true);
  mapView.setBuiltInZoomControls(true);
  mapView.setMultiTouchControls(true);
  mapView.setUseDataConnection(true);
  mapView.setTileSource(TileSourceFactory.MAPQUESTOSM);

  IMapController mapViewController = mapView.getController();
  mapViewController.setZoom(15);
  mapViewController.setCenter(BERLIN);
}

请帮忙!

问候维姬

【问题讨论】:

    标签: osmdroid


    【解决方案1】:

    不幸的是,您不能真正强制 osmdroid 加载一个特定的 zip。

    您可以做的是使用 XYTileSource 名称,因为它必须与 zip 文件中的根目录名称匹配:

    map.setTileSource(new XYTileSource("Map_1",
        ResourceProxy.string.mapquest_osm, 0, 18, 256, ".png", new String[] {
            "http://otile1.mqcdn.com/tiles/1.0.0/map/",
            "http://otile2.mqcdn.com/tiles/1.0.0/map/",
            "http://otile3.mqcdn.com/tiles/1.0.0/map/",
            "http://otile4.mqcdn.com/tiles/1.0.0/map/"}));
    

    将只使用结构如下的 zip 文件:

    +-- Map_1
    +-- 10
    ¦ +-- 550
    ¦ +-- 335.png
    ...
    

    另请参考:Download maps for osmdroid

    【讨论】:

    • 如果你批准了我的拉取请求,我们可以:)
    • 其实不是mker。对不起,你和 osmdroid 家伙混在一起了
    • 这很好用。是否可以在 1 个 zip 文件中指定不同的 XYTileSource 名称(带有随附的图块)?
    • 如果您将“Map_1”条目和“Map_2”条目放在同一个 zip 文件中?然后您调用 XYTileSource("Map_1", ... ) 或 XYTileSource("Map_2", ... )?是的,我认为它应该可以工作。
    • 对于任何大尺寸的 .zip 性能开始变得非常糟糕的警告。查看为这项工作设计了格式的 gemf。不过,在名称和文件位置上存在同样的问题。
    猜你喜欢
    • 1970-01-01
    • 2016-10-11
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多