[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 範例下載。