Android開發筆記-Google地圖定位

※注意:本文已過時,新版API請參考官方網站

內容說明:讓Google地圖定位在目前位置、修改模擬器目前座標

資料來源:Google!Android 2手機應用程式設計入門第三版

在「使用Google地圖」與「GPS與網路定位」中有分別介紹Google地圖與GPS的使用方式,不過在使用Google地圖定位時,不需要撰寫太多GPS複雜的處理,只要建立幾個 Google API 的類別就可以輕鬆處理。本篇將以「使用Google地圖」的程式碼為基礎來修改。

設定使用權限

由於要使用GPS的關係,請先開啟使用權限。開啟AndroidManifest.xml,並且在後面加入的權限。INTERNET是網路權限,ACCESS_FINE_LOCATION是GPS權限,ACCESS_COARSE_LOCATION是網路定位。

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

加入定位層(MyLocationOverlay)

Google地圖上要加入座標的方式,是在原始地圖上加入一個座標層,並且在座標層上標示我們所要的地標。因此我們接著修改「使用Google地圖」一文的程式碼如下。

MyLocationOverlay mylayer;
    private void setupMap() {
        //加入定位層
        List<Overlay> overlays = map.getOverlays();  //在地圖上建立一個座標層
        mylayer = new MyLocationOverlay(this, map); //建立定位層,並取得目前座標位置
        mylayer.runOnFirstFix(new Runnable() {      //每次更新時要執行的動作
            public void run() {
                map.setTraffic(true);       //設定地圖檢示模式
                //.setTraffic(true):一般地圖
                //.setSatellite(true):衛星地圖
                //.setStreetView:街景圖
                
                mapController.setZoom(17);  //設定放大倍率1(地球)-21(街景)
                mapController.animateTo(mylayer.getMyLocation());   //指定地圖中央點為目前位置
            }
        });
        map.setBuiltInZoomControls(true);   //加入縮放控制
        overlays.add(mylayer);  //將定位層加入地圖座標層中
    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        mylayer.enableMyLocation(); //進入頁面時開始更新定位資訊
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        mylayer.disableMyLocation();    //離開頁面時停止更新
    }

修改模擬器座標

如果使用模擬器來檢示GPS定位的程式,會發生模擬器無法定位的困擾。為了使我們的模擬器也能模擬定位的效果,可以直接在模擬器上設定虛擬的座標。首先選擇Eclipse上的 Window > Show View > Emulator Control,在下面就會出現一個 Emulator Control 面版,下拉至 Location Controls 的地方就可以手動輸入經緯度或是讀取GPX與KML檔(模擬器要開啟),當我們按下 Send 時就相當於GPS座標改變,程式也會做出相對的回應。

Emulator Control