2014-04-02 89 views
1

我在Android中颇为新颖,我为应用程序获得了一个非常有趣的项目。我需要的是为他们各自的车站创建两个穿越地铁线/路线的地铁地图。使用双指缩放(Android)创建交互式地铁地图

如果我们考虑一个静态布局,带有地铁路线的背景图像和在布局上以相对方式使用按钮来设置站点,这一点看起来很容易。

当整个布局必须可缩放时,难度部分才会出现,无论是缩放按钮级别还是缩放。这包括在缩放后拖动地图。

也许这个问题可能有点混乱。如果我没有表达自己很好,这是一个应用程序,它确实或多或少相同的我想要什么的例子:

https://play.google.com/store/apps/details?id=com.mtr.mtrmobile

这是香港的地铁线路图。我想创建与App上的地图相同的功能,但在我的情况下仅适用于两条地铁线路。

我不是很熟悉android.graphics或OpenGL,我一直在寻找很长时间的答案或类似的问题在互联网上没有结果。

如果有人能简单地解释我应用程序上的地图是如何制作的,或者告诉我如何实现这一点,我将非常感激。

在此先感谢。

回答

1

我建议你可以看看OSMdroid,它可以让你加载离线地图,你可以覆盖任何你想要的东西。

有用: https://code.google.com/p/osmdroid/

这个作品非常相似,谷歌地图API,所以它很容易,而且重要的是你有帮助,你一路OSMdroid的主持人。我目前正在使用这个API,我很喜欢它。

+0

谢谢!我会看看OSMdroid – margabro

1

就像zIronManBox所说的,OpenStreetMap是一个不错的选择。通过实施OSMdroid,您可以在线或离线地图,并能够添加标记到位置,甚至可以标记整条街道。

获得OSMdroid也很容易。您将需要有两个库: osmdroid-android-4.1.jarslf4j-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的教程!

+0

非常感谢这个例子!我会稍后再尝试......似乎是一个好主意..我想我可以在我的地铁线路上使用自定义叠加层,使用坐标放置电台/按钮和多段线以标记标记之间的路径!我对吗? – margabro

+0

@margabro是的,这似乎是一个好主意!祝你好运! – willedanielsson

+0

我无法在这个项目上继续前进。我试图使用无地图但不是联机的地图。我遵循了几个教程,并下载了写离线地图,但无法使其工作。不能叠加图像和按钮。你可以给我更多的指导如何实现这一切?非常感谢您的帮助!谢谢!! – margabro