Android Map开发基础知识学习笔记

来源:互联网 发布:淘宝物品怎么发链接 编辑:程序博客网 时间:2024/05/17 03:38

注册 Android 地图 API 密钥

 

运行:keytool -list -keystore ~/.android/debug.keystore

用得到的MD5码到http://code.google.com/intl/zh-CN/android/maps-api-signup.html注册API密钥。参考

http://www.cnblogs.com/feisky/archive/2010/01/17/1650083.html

 

注册完成后会得到如下的网页:

您的密钥是:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

此密钥适用于所有使用以下指纹所对应证书进行验证的应用程序:

XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

下面是一个 xml 格式的示例,帮助您了解地图功能:

 <com.google.android.maps.MapView
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"                
  android:apiKey="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  />

 

模拟器设置

 

建立一个"Google Inc.:Google APIs:3"的模拟器。

 

手机终端需要支持Google Add-ons

 

作为与Google合作的手机终端的制造商,如果想在自己的Android终端中集成Google的一些应用,例如mapmarketpicasasync等,需要和Google签约,这样Google会有专人帮你将这一系列服务整合到你的平台中来。

 

作为没有和Google合作的手机终端的制造商,我们可以使用破解的方法将Add-ons中的运行库整合到自己的framework中来(build到手机终端的system.img中)。操作如下:

 

1.Android中,额外支持Google Add-ons(Google Maps),需要将如下档案(从标准的SDKpull出来的,也可以从GPhonepull出来)打包进System.imgGoogle Add-ons只需要1--2Goolge Maps(Google的地图程序) 需要1--5

1)system/framework      com.google.android.maps.jar

2)system/etc/permissions  com.google.android.maps.xml

3)system/framework      com.google.android.gtalkservice.jar

4)system/etc/permissions  com.google.android.gtalkservice.xml

5)system/app          Maps.apk (Google Maps v3.0)

 

2.源码:Android Cupcake Release(经测试,在donut平台同样适用。)

1)编译源码(为了生成out/target目录中Android最原始的东西)

2)将以上文件加入out/target/product/generic相应目录,在源码根目录使用make snod打包,获得新的system.img

 

权限和Maps库设置

 

manifest.xml中设置全相应的权限,比如:  

                                

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

<uses-permission android:name="android.permission.INTERNET" />

 

manifest.xml中加上要用的maps库:

 

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.example.package.name">

  ...

  <application android:name="MyApplication" >

    <uses-library android:name="com.google.android.maps" />

    ...

  </application>

  ...

</manifest>

 

Maps库分析

 

Maps库提供了十几个类,具体可以参考这里http://code.google.com/intl/ja/android/add-ons/google-apis/reference/index.html,包括MapviewMapControllerMapActivity等。

 

1MapController

 

控制地图移动,伸缩,以某个GPS坐标为中心,控制MapView中的view组件,管理Overlay,提供View的基本功能。使用多种地图模式(地图模式(某些城市可实时对交通状况进行更新),卫星模式,街景模式)来查看Google Map

 

常用方法:animateTo(GeoPoint point)  setCenter(GeoPoint point)  setZoom(int zoomLevel) 等。

 

2MapView

 

Mapview是用来显示地图的view, 它派生自android.view.ViewGroup。当MapView获得焦点,可以控制地图的移动和缩放。

 

地图可以以不同的形式来显示出来,如街景模式,卫星模式等,通过setSatellite(boolean)  setTraffic(boolean), setStreetView(boolean) 方法。

 

MapView只能被MapActivity来创建,这是因为mapview需要通过后台的线程来连接网络或者文件系统,而这些线程要由mapActivity来管理。

 

需要特别说明的一点是,android 1.5中,mapzoom采用了built-in机制,可以通过setBuiltInZoomControls(boolean)来设置是否在地图上显示zoom控件。

 

常用方法:getController()  getOverlays()  setSatellite(boolean)  setTraffic(boolean),   setStreetView(boolean)  setBuiltInZoomControls(boolean)等。

 

3MapActivity

 

管理Activity的生命周期,为mapview建立及取消对map service的连接。

 

MapActivity是一个抽象类,任何想要显示MapViewactivity都需要派生自MapActivity。并且在其派生类的onCreate()中,都要创建一个MapView实例,可以通过MapViewconstructor (然后添加到ViewViewGroup.addView(View)) 或者通过layout XML来创建。

 

4Overlay

 

Overlay是覆盖到MapView的最上层,可以扩展其ondraw接口,自定义在MapView中显示一些自己的东西。MapView通过MapView.getOverlays()Overlay进行管理。

 

除了Overlay这个基类,Google还扩展了2个比较有用的Overlay

 

 1)MylocationOverlay—集成了Android.location中接收当前坐标的接口,集成SersorManagerCompassSensor的接口

我们只需要enableMyLocation(),enableCompass就可以让我们的程序拥有实时的MyLocation以及Compass 功能(Activity.onResume())。

 

 2ItemlizedOverlay—管理一个OverlayItem链表,用图片等资源在地图上作风格相同的标记。

 

5ProjectionMapViewGPS坐标与设备坐标的转换(GeoPointPoint)。

 

一个简单的小例子

 

用一个小程序来演示一下android中地图功能的开发。主要功能是实现了地图的缩放,添加了菜单,从而可以手动选择地图的显示模式等。

 

Step1: 新建一个android project, 注意这里要选择的buildtarget"GoogleAPIs"

 

Step 2: 修改menifest文件:

 

 

Step 3: 修改layout文件,main.xml

 

 

这里需要将api key中的????????????改成你自己申请到的api key.

 

Step4: 修改代码:

 

 

Google Map

原创粉丝点击