技术开发 频道

Map API密钥做Google Android地图应用

  【IT168技术】通过上一节的讲解,已经申请到了一个Android Map API Key,下面开始讲解使用Map API密钥实现编程的基本流程。

  第1步:在文件AndroidManifest.xml中声明权限。

  在Anroid系统中,如果程序执行需要读取到安全敏感的项目,那么必须在AndroidManifest.xml中声明相关权限请求,比如这个地图程序需要从网络读取相关数据。所以必须声明android.permission.INTERNET权限。具体方法是在AndroidManifest.xml中添加如下代码。

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

  另外,因为maps类不是Android启动的默认类,所以还需要在文件AndroidManifest.xml的application 标签中申明要用maps类。

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

  下面是基本的AndroidManifest.xml文件代码。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    
<application android:icon="@drawable/icon" android:label="@string/app_name">
    
<uses-library android:name="com.google.android.maps" />
    
</application>
<uses-permission android:name="android.permission.INTERNET" />
</manifest>

  第2步:在main.xml主文件中完成Layout。

  下面开始着手来完成界面。假设设置要显示杭州的卫星地图,并在地图上方有5个按钮,分别可以放大地图、缩小地图或者切换显示模式(卫星,交通,街景)。即整个界面主要由2个部分组成,上面是一排5个按钮,下面是MapView。

  在Android中,LinearLayout是可以互相嵌套的,在此可以把上面5个按钮放在一个子LinearLayout里边(子LinearLayout的指定可以由android:addStatesFromChildren="true"实现),然后再把这个子LinearLayout加到外面的父LinearLayout里边。具体实现如下。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation
="vertical" android:layout_width="fill_parent"
android:layout_height
="fill_parent">

<LinearLayout android:layout_width="fill_parent"
  android:addStatesFromChildren
="true"           /*说明是子Layout
  android:gravity
="center_vertical"                /*这个子Layout里边的按钮是横向排列
  
>

  
<Button android:id="@+id/ZoomOut"
   android:text
="放大"
   android:layout_width
="wrap_content"
   android:layout_height
="wrap_content"
   android:layout_marginTop
="5dip"            /*下面的4个属性,指定了按钮的相对位置
   android:layout_marginLeft
="30dip"
   android:layout_marginRight
="5dip"
   android:layout_marginBottom
="5dip"
   android:padding
="5dip" />

  
/*其余4个按钮省略
</LinearLayout>
<com.google.android.maps.MapView
  android:id
="@+id/map"
  android:layout_width
="fill_parent"
  android:layout_height
="fill_parent"
  android:enabled
="true"
  android:clickable
="true"
  android:apiKey
="在此输入上一节申请的API Key"      /*必须加上上一节申请的API Key
/>

</LinearLayout>

  第3步:完成主Java程序代码。

  首先,主文件的这个类必须继承MapActivity。

  public class Mapapp extends MapActivity {

  然后,来关注onCreate()函数,其核心代码如下。

public void onCreate(Bundle icicle) {
//取得地图View
  myMapView
= (MapView) findViewById(R.id.map);
  
//设置为卫星模式
  myMapView.setSatellite(
true);
  
//地图初始化的点:杭州
  GeoPoint p
= new GeoPoint((int) (30.27 * 1000000),
    (
int) (120.16 * 1000000));
  
//取得地图View的控制
  MapController mc
= myMapView.getController();
  
//定位到杭州
  mc.animateTo(p);
  
//设置初始化倍数
  mc.setZoom(DEFAULT_ZOOM_LEVEL);
}

  接着,编写缩放按钮的处理代码,具体如下。

btnZoomIn.setOnClickListener(new View.OnClickListener() {
  
public void onClick(View view) {
     myMapView.getController().setZoom(myMapView.getZoomLevel()
- 1);
  });

  地图模式的切换由下面代码实现。

btnSatellite.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
  myMapView.setSatellite(
true);                    //卫星模式为True
  myMapView.setTraffic(
false);                    //交通模式为False
  myMapView.setStreetView(
false);                //街景模式为False
}
});

  到此为止,就完成了第一个使用Map API的应用程序。

0
相关文章