我是Android的新手,我有一个非常有趣的应用程序项目。我需要的是为两条过境的地铁线路/路线及其各自的车站创建地铁地图。
如果我们考虑一个静态布局,使用地铁路线的背景图像并使用相对于布局设置的工作站的按钮,这似乎很容易。
当整个布局必须可缩放时,无论是缩放按钮级别还是缩放和缩放,都会遇到困难。这包括在缩放后通过拖动移动地图。
也许这个问题可能有点令人困惑。如果我没有表达自己,这是一个应用程序的例子,它或多或少与我想要的相同:
https://play.google.com/store/apps/details?id=com.mtr.mtrmobile
这是香港的地铁地图。我想在应用程序上创建与地图相同的功能,但在我的情况下仅用于两条地铁线。
我对android.graphics或OpenGL不是很熟悉,我一直在互联网上搜索答案或类似问题很长时间没有结果。
如果有人能够简单地向我解释应用程序上的地图是如何制作的,或者让我知道如何实现这一目标,我将非常感激。
提前致谢。
答案 0 :(得分:1)
我建议您查看OSMdroid,它可以让您加载离线地图,并且可以覆盖您想要的任何内容。
有用的: https://code.google.com/p/osmdroid/
这与GoogleMaps API非常相似,所以它非常简单,而且重要的是你有OSMdroid的版主帮助你。我目前正在使用这个API,我非常喜欢它。
答案 1 :(得分:1)
就像zIronManBox所说,OpenStreetMap是一个很好的方法。通过实施OSMdroid,您可以拥有在线或离线地图,并能够将标记添加到位置,甚至标记整条街道。
获得OSMdroid也很容易。您需要有两个库: osmdroid-android-4.1.jar 和 slf4j-android-1.6.1-RC1.jar 。版本很重要。
现在您只需创建一个activty和一个xml文件。
在您的XML文件中(我的名字是map),您有以下代码:
<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);
不要忘记在清单文件中添加权限:
<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的教程!