[Android 學習筆記] Google Map API 地圖定位教學

基於地理定位的服務(Locaition based Service)一直是非常實用有趣的服務,市面上如查詢美食、打卡遊戲等服務就是一種 LBS 服務。


一、Android 的定位服務與座標
Android 提供的定位提供者
1. GPS 定位提供者:提供者名稱為字串”gps”,使用衛星訊號較精確,室內不可用。
2. 網路提供者:提供者名稱為”network”,使用基地台三角定位。需有網路,室內可用。


二、使用定位服務與 Google Map
一般定位服務常整合 Google Map 提供附近地圖服務。
取得定位服務的 LocationManager 物件

private LocationManager lc;
lc = (LocationManager)getSystemService(LOCATION_SERVICE);

檢查是否可用 GPS
if(!lc.isProviderEnabled(LocationManager.GPS_PROVIDER)) {

}

建立 LocationListener
class MyLocationListener implements LocationListener {
    public void onLocationChanged(Location current)
    {}
    public void onProviderDisabled(String provider)
    {}
    public void onProviderEnabled(String provider)
    {}
    public void onStatusChanged(String provider, int status, Bundle extras){}
}

註冊更新座標的傾聽者物件
@Override
protected void onResume() {
    super.onResume();
    ll = new MyLocationListener();
    lc.requestLocationUpdates(
        LocationManager.GPS_PROVIDER,
        minTime, minDistance
    );
    lc.requestLocationUpdate(
        LocationManager.NETWORK_PROVIDER,
        minTime, minDistance, ll
    );
}

@Override
protected void onPause() {
    super.pause();
    lc.removeUpdates(ll);
}
使用 Google 地圖程式顯示附近地圖
public void onClick(View view) {
    float latitude = (float)currentLocation.getLatitude();
    float longitude = (float)currentLocation.getLongitude();
    String uri = String.format("geo:%f,%f?z=18", latitude, longitude);
    Intent geoMap = new Intent(Intent.Action_VIEW, Uri.parse(geoMap));
    startActivity(geoMap);
}

最後附上一個運用 GPS 結合 Google Map 取得地理位置的範例,歡迎有興趣朋友可以參考。Github 範例下載。

贊助本站 (Donate)