如何在Android应用程序中使用OSM映射。 有没有任何教程要了解在Android中使用OSM?

嗨,从过去的一个星期,我正在寻找一个教程/手册或步骤包括打开街道地图到我的android应用程序。 我发现的只是一个很大的项目,有很多更多的function,否则很多问题都没有得出关于“如何”的结论。

有新鲜的博客/网站或文件可以引用吗?

我不知道任何教程,但这里是我使用Osmdroid写的一个简单例子的代码。

// This is all you need to display an OSM map using osmdroid package osmdemo.demo; import org.osmdroid.tileprovider.tilesource.TileSourceFactory; import org.osmdroid.util.GeoPoint; import org.osmdroid.views.MapController; import org.osmdroid.views.MapView; import android.app.Activity; import android.os.Bundle; public class OsmdroidDemoMap extends Activity { private MapView mMapView; private MapController mMapController; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.osm_main); mMapView = (MapView) findViewById(R.id.mapview); mMapView.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE); mMapView.setBuiltInZoomControls(true); mMapController = (MapController) mMapView.getController(); mMapController.setZoom(13); GeoPoint gPt = new GeoPoint(51500000, -150000); mMapController.setCenter(gPt); } } /* HAVE THIS AS YOUR osm_main.xml ---------------------------------------------------------- XML START <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <org.osmdroid.views.MapView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /> </LinearLayout> ---------------------------------------------------------- XML END Include slf4j-android-1.5.8.jar and osmdroid-android-4.1.jar in the build path (Google search for where to get them from) */ 

请注意,您现在必须使用最新版本(4.1)以避免阻止从OSM下载磁贴。

另外请注意,他们正在将他们的版本转移到Github,而且这个过程还没有完成。 此页面下载保存jar子的链接

这个OSMdroid示例项目绝对是我遇到的最简单的。 不超过5分钟即可正常运行。 注意清单文件。

为了更复杂一些, 本教程将显示一个包含当前地理点的地图。

以下是来自各个项目的一些片段 。 尽pipe如此,还没有testing过所有这些。

你应该下载OSMdroid和SLF4J ,放在libs文件夹, Add as Library osmdroid,修正AndroidManifest.xml具有适当的权限(见第一个教程)。 如果你这样做,不需要像第一个教程中推荐的那样修改gradle.build文件。

对于初学者,我build议您在使用这些版本时使用旧版本的osmdroid(3.x)。 一旦你感到舒服,迁移到新版本的osmdroid(4.x或5.x)。

GeoPoint和MapController类在新版本中更改名称,所以请注意不兼容的types错误 ( INCOMPATIBLE TYPES ERROR)

IGeoPoint不能转换为GeoPoint

IMapController无法转换为MapController

我已经解释了这里的步骤。 我也build议你看看他们的示例项目 ,这是非常有用的。 和他们关于HOW的文档;)

离线使用

1-您必须使用MOBAC下载地图。

2-把它放到/mnt/sdcard/osmdroid/

完成这些步骤后,所有内容都与@Nick解释的相同。