首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在android中使用OSM数据实现单个城市的离线地理编码器?

如何在android中使用OSM数据实现单个城市的离线地理编码器?
EN

Stack Overflow用户
提问于 2012-01-13 19:28:18
回答 2查看 3.7K关注 0票数 18

我正在尝试开发一个使用特定缩放级别的OSM地图切片的脱机android地图,为此,我使用了一个开源库:Osmdroid

现在,我正在研究为可以与我的应用程序集成的单个城市创建离线地理编码/反向地理编码的可能性。

我可以将Osm xml数据用于此目的吗?如果是这样,那么谁能建议/解释一下如何使用它来创建SQlite db..与我的应用程序一起使用

我读了herealso here上关于Spatialite的文章

,但不能很好地理解它的工作和实现。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2014-09-13 03:24:06

使用Skobbler开发工具包,您可以使用离线地图和(反向)地理编码。

票数 1
EN

Stack Overflow用户

发布于 2020-11-13 05:19:16

这里有一个答案,https://stackoverflow.com/a/64811929/13794189

并如下所示:

要在离线模式下使用Open Street Maps (OSM),您需要首先实现一个下载管理器,就像下面的帖子所示。它具有恢复功能,这对于非常大的文件是很好的:

https://stackoverflow.com/a/64811752/13794189

接下来,您可以将下载的OSM映射文件加载到mapView中,如下所示:

代码语言:javascript
复制
     org.osmdroid.config.IConfigurationProvider osmConf = org.osmdroid.config.Configuration.getInstance();
    File basePath = new File(SessionData.offlineMapsDirectoryPath, "osmdroid");
    osmConf.setOsmdroidBasePath(basePath);
    File tileCache = new File(SessionData.offlineMapsDirectoryPath, "tile");
    osmConf.setOsmdroidTileCache(tileCache);

    map = (MapView) getActivity().findViewById(R.id.map);  // create basic map
    //map.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE);
    map.setTilesScaledToDpi(true);
    map.setMultiTouchControls(true);
    map.setUseDataConnection(false);

    // add compass to map
    //CompassOverlay compassOverlay = new CompassOverlay(getActivity(), new InternalCompassOrientationProvider(getActivity()), map);
    //compassOverlay.enableCompass();
    //map.getOverlays().add(compassOverlay);

    //attach listeners
    MapEventsOverlay mapEventsOverlay = new MapEventsOverlay(this);
    map.getOverlays().add(0, mapEventsOverlay);

在上面的代码中,SessionData.offlineMapsDirectoryPath是保存下载文件的路径。

不要忘记在gradle文件中添加以下实现:

代码语言:javascript
复制
implementation 'org.osmdroid:osmdroid-android:6.1.0'
implementation 'com.github.MKergall:osmbonuspack:6.6.0'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8849870

复制
相关文章

相似问题

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