Android上使用Google Map

    技术2025-10-06  7

    版权声明 :转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://westyi.blogbus.com/logs/68718805.html

    今天折腾了大半天,总算把Android上面的地图显示出来了,小记一下过程。

    前两天配置好了 Android开发环境,并且写了Hello World,但是对Android开发还是一知半解,就像尝试一下地图的开发,因为我后面要做的工作是与地图息息相关的。

    我在安装Android SDK Platform的时候顺便安装了开发示例。在Google API平台下有一个示例叫做MapsDemo,我本以为运行它就可以直接显示地图了,结果,到模拟器上面执行,只显示网格,没有半点显示地图的迹象。

    上网搜索了一下,发现Android上面的Google Map也需要API Key。它根据应用程序的key的MD5签名来生成API key,所以使用的时候必须有一个key。然后再使用keytool获得MD5签名。Android SDK默认生成一个debug.keystore文件,放在用户主目录下的.android文件夹中,运行keytool工具(JDK中bin目录下有 keytool工具)命令如下:

    C:/Program Files/Java/jdk1.6.0_18/bin>keytool.exe -list -alias androiddebugkey -keystore C:/Users/westyi/.android/debug.keystore -storepass android -keypass android

    然后到http://code.google.com/android/add-ons/google-apis/maps-api-signup.html页面根据上面得到的MD5签名获得地图API key。

    得到自己的API key之后,就要对MapsDemo进行修改,将其中需要的Map key修改为自己获得的Key。主要修改两个地方:res/layout/mapview.xml中第30行 android:apikey="sample_api_key",以及MapViewCompassDemo.java文件中第143行 mMapView = new MapView(this, "sample_api_key");将sample_api_key改为自己的api key。

    至此,我以为可以大功告成了,因为网上多数地图方面的问题都是关于API Key的,我想这个Demo也应该就是这方面的问题吧。但事实确并非如此,运行后确实不再是网格了,这次是全白的!很诡异~~~

    我百思不得其解,然后就在网上拼命找与Android地图开发相关的文章,发现多数的文章中都没有理会google这个示例,而是自己动手写 Activity。经过我对MapsDemo的代码分析,我发现代码中只是使用了MapView,而并未设置地图的缩放级别,地图中心。这可能就是显示全 白界面的原因!需要对MapViewDemo.java文件进行修改,在onCreate方法最后添加代码:

    MapView map = (MapView)findViewById(R.id.map);//获得MapView对象 map.getController().setCenter(new GeoPoint(39971036,116314659));//设置地图中心 map.getController().setZoom(10);//设置缩放级别

     

    其中R.id.map是Android SDK自动生成的,需要在res/layout/mapview.xml文件第25行加上android:id="@+id/map",为MapView 添加一个id编号,才能在代码中用findViewById获得MapView对象。

    再次在模拟器中运行,亲爱的北京地图终于显示在了Android模拟器上面!

    效果图如下:

     

    PS:

    MapViewDemo改完之后发现,MapViewCompassDemo应该是没有什么问题的。应该是运行的时候需要在DDMS中模拟GPS位置,而且MapViewCompassDemo.java中似乎将地图的缩放级别设置为18,太高了,该成10左右应该更好。

    参考:

    http://mobiforge.com/developing/story/using-google-maps-android

    最新回复(0)