技术开发 频道

Android Google Map API使用的八个步骤

  步骤5 增加MapView控件

  接下来,我们可以往布局文件中增加MapView控件。我们在main.xml中添加如下代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width
="fill_parent"
    android:layout_height
="fill_parent"
    android:orientation
="vertical" >
    
<FrameLayout
    android:layout_width
="fill_parent"
    android:layout_height
="fill_parent">
        
<com.google.android.maps.MapView
        android:id
="@+id/mapView"
        android:layout_width
="fill_parent"
        android:layout_height
="fill_parent"
        android:clickable
="true"
        android:apiKey
="你的GOOGLE MAP API KEY "/>
    
</FrameLayout>
</LinearLayout>

  在这个控件中,请注意要在android:apiKey的位置填入刚申请的google map api key。

  步骤6 设置相关的权限

  由于我们的应用需要调用Google Map的数据,以及通过手机的GPS获得相关的其他地理位置数据,因此我们必须在Android的Manifest文件中进行权限的设置。

  我们打开AndroidManifest.xml文件,然后增加如下代码所示的权限设置,注意添加在标签后,但要在标签前。

<uses-feature android:name="android.hardware.location.gps"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.INTERNET"/>

  在这里,我们分别调用了gps位置服务权限,使用互联网的权限以及使用非常好的位置查找的权限(FINE_LOCATION)。在本文中,其实没用到FINE_LOCATION,但只是告诉开发者可以调整使用不同的地理位置提供者(providers)以提供准确的位置服务,如果要有比较精确的地理位置服务,那么可以设置android.permisson.ACCESS_FINE_LOCATION服务。要注意的是在开发中,不要过多引用一些不需要使用的权限设置,否则会给用户带来担忧安全等问题。要是只想调用一般的位置服务,可以使用普通的android.permission.ACCESS_COARSE_LOCATION权限。

  为了在应用中使用Google Map,需要在Manifest文件中包含相关的类库文件,所以加入如下代码:

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

  为了视觉的美观,我们把标题栏也去掉,以便留给地图更大的空间,所以设置为

  android:theme="@android:style/Theme.NoTitleBar"

  下面是完整的Manifest文件代码:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package
="com.shawnbe.mallfinder"
    android:versionCode
="1"
    android:versionName
="1.0" >
    
<uses-sdk android:minSdkVersion="7" />
    
<application
        android:icon
="@drawable/ic_launcher"
        android:label
="@string/app_name"
        android:theme
="@android:style/Theme.NoTitleBar">
        
<activity
            android:label
="@string/app_name"
            android:name
=".MallFinderActivity" >
            
<intent-filter >
                
<action android:name="android.intent.action.MAIN" />
  
                
<category android:name="android.intent.category.LAUNCHER" />
            
</intent-filter>
        
</activity>
        
<uses-library android:required="true" android:name="com.google.android.maps" />
    
</application>
    
<uses-feature android:name="android.hardware.location.gps"/>
    
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

  步骤7 设置MapView

  下面对主activity程序(MallFinderActivity.java)进行修改,首先让其继承MapActivity类,如下:

  public class MallFinderActivity extends MapActivity {

  由于继承了MapActivity类,因此必须实现isRouteDisplayed方法,这个方法是用来做路线导航用的,这里我们不需要,因此只需要简单返回false即可:

  @Override

  protected boolean isRouteDisplayed() {

  // TODO Auto-generated method stub

  return false;

  }

  接下来我们就可以声明MapController控件,并对其进行相关属性的设置了,首先是声明控件

  private MapController mapController;

  private MapView mapView;

  并在oncreate方法中进行属性设置如下:

mapView = (MapView)findViewById(R.id.mapView);
mapView.setBuiltInZoomControls(
true);
mapView.setSatellite(
false);
mapView.setStreetView(
true);
mapController
= mapView.getController();
mapController.setZoom(
13);

  在上面的代码中,设置了地图显示的方式为街道模式(通过设置mapview的setStreetView属性值为true),并且通过mapView.setBuiltInZoomControls(true); 使用了系统内置的放大缩小功能,并设置了地图的放大缩小倍数为13。

  这个时候我们就可以选择运行应用,看下是否符合我们的初步预期效果,运行后效果如下图:

使用Android Google Map实做LBS应用

3
相关文章