就像zIronManBox所说的,OpenStreetMap是一个不错的选择。通过实施OSMdroid,您可以在线或离线地图,并能够添加标记到位置,甚至可以标记整条街道。
获得OSMdroid也很容易。您将需要有两个库: osmdroid-android-4.1.jar和slf4j-android-1.6.1-RC1.jar。版本很重要。
现在你只需创建一个活动和一个XML文件。
在你的XML文件(我的名字是地图),你有这样的代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_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"
tilesource="MAPQUESTOSM" />
</LinearLayout>
这将创建一个ID MapView的一个观点。如果您希望文本字段位于上方或下方,可以将其添加到此XML文件中。 在活动中你应该在你的onCreate添加以下代码:
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
mapView = (MapView) this.findViewById(R.id.mapView);
mapView.setBuiltInZoomControls(true);
mapView.setMultiTouchControls(true);
mapView.setClickable(true);
mapController = (MapController) mapView.getController();
mapController.setZoom(14);
不要忘了在你的manifest文件添加权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
如果你需要很好地指导获取地图去工作,请访问 http://android-er.blogspot.se/2012/05/simple-example-use-osmdroid-and-slf4j.html 这里有很多关于OSMdroid的教程!
谢谢!我会看看OSMdroid – margabro