现在的位置: 首页 > 综合 > 正文

Google Map API的使用

2014年02月21日 ⁄ 综合 ⁄ 共 2513字 ⁄ 字号 评论关闭

 

Android中定义了一个名为com.google.android.maps的包,其中包含了一系列用于在Google Map上显示、控制和层叠信息的功能类,以下是该包中最重要的几个类:

·MapActivity:这个类是用于显示Google Map的Activity类,它需要连接底层网络。MapActivity是一个抽象类,任何想要显示MapView的activity都需要派生自MapActivity,并且在其派生类的onCreate()中,都要创建一个MapView实例。

·MapView:MapView是用于显示地图的View组件。它派生自android.view.ViewGroup。它必须和MapActivity配合使用,而且只能被MapActivity创建,这是因为MapView需要通过后台的线程来连接网络或者文件系统,而这些线程要由MapActivity来管理。

·MapController:MapController用于控制地图的移动、缩放等。

·Overlay:这是一个可显示于地图之上的可绘制的对象。

·GeoPoint:这是一个包含经纬度位置的对象。

下面我们将使用com.google.android.maps包来实现一个地图浏览程序(见本书所附代码:第9章\Examples_09_03)。

步骤1:创建工程,注意要选择的Build Target为“Google APIs”。

步骤2:修改AndroidManifest.xml文件。

由于我们要使用Google Map API,所以必须先在AndroidManifest.xml中定义如下信息:<uses-library android:name="com.google.android.maps"/>,当然要从网络获取地图数据,还需要添加应用程序访问网络的权限。代码如下:

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

步骤3:创建MapView。

要显示地图,需要创建一个MapView,在XML文件中的布局如代码清单9-3所示。其中android:apiKey的值便是我们申请的Android Map API Key。

     代码清单9-3  main.xml

     <?xml version="1.0" encoding="utf-8"?> 

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

         android:layout_width="fill_parent" 

         android:layout_height="fill_parent" 

         > 

     <com.google.android.maps.MapView

     android:id="@+id/MapView01"

     android:layout_width="fill_parent"

     android:layout_height="fill_parent"

     android:apiKey="0dYpmIXGIdwiVm-HEpzuUW2fjNYsFQ9EvYir1sg"/>

     </RelativeLayout> 

当然,可以在程序中通过如下代码创建MapView。

     MapView map = new MapView(this, "[Android Maps API Key]");     

步骤4:实现MapActivity。

MapView需要由MapActivity来管理,所以程序部分应该继承自MapActivity类,必须实现isRouteDisplayed方法。MapView提供了3种模式的地图,分别可以通过以下方式设置采用什么模式来显示地图。另外,可以通过setBuiltInZoomControls方法设置地图是否支持缩放。

     //设置为交通模式

     //mMapView.setTraffic(true);

     //设置为卫星模式

     //mMapView.setSatellite(true); 

     //设置为街景模式

     //mMapView.setStreetView(false)   

步骤5:MapController的使用。

如果要设置地图显示的地点以及放大的倍数等,就需要使用MapController来控制地图。可以通过如下代码获得MapController对象:

     mMapController = mMapView.getController();   

要定位地点,需要构建一个GeoPoint来表示地点的经度和纬度,然后使用animateTo方法将地图定位到指定的GeoPoint上,代码如下:

     //设置起点为成都

     mGeoPoint=new GeoPoint((int)(30.659259*1000000),(int)(104.065762*1000000));

     //定位到成都

     mMapController.animateTo(mGeoPoint);    

步骤6:Overlay的使用。

如果需要在地图上标注一些图标文字等信息,就需要使用Overlay。这里我们首先要将地图上的经度和纬度转换成屏幕上实际的坐标,才能将信息绘制上去。Map API中提供了Projection.toPixels(GeoPoint in, Point out)方法,可以将经度和纬度转换成屏幕上的坐标。首先需要实现Overlay中的draw方法才能在地图上绘制信息,代码如下:

     class MyLocationOverlay extends Overlay

     {

     public boolean draw(Canvas canvas,MapView mapView,boolean shadow,long when)

     {

     //...

     }

     }     

下面是示例运行效果,图9-13以交通模式显示地图,图9-14以卫星模式显示地图,它们都在屏幕上显示了一个图标,并标明了位置。

               

抱歉!评论已关闭.