1.gps定位
2.基站定位
此類位置的獲取有賴於手機無線通訊訊號,當手機處在訊號覆蓋範圍內,手機可以獲得該區域(即通訊術語中的「小區」)的識別號。因為這些識別號是惟一的,因此可以將識別號和地理座標對應起來,因此根據識別號就可以知道地理位置。但是誤差比較大。
在android當中,大部分和通訊網路相關的資訊都需要經過一項系統服務,即telephonemanager來獲得。
telephonymanager mtelman = (telephonymanager) getsystemservice(context.telephony_service);
string operator = mtelman.getnetworkoperator();
string mcc = operator.substring(0, 3);
string mnc = operator.substring(3);
gsmcelllocation location = (gsmcelllocation) mtelman.getcelllocation();
int cid = location.getcid();
int lac = location.getlac();
通過上面的方法,可獲得mcc、mnc、cid、lac,對照geolocation api network protocol,剩下不多的引數也可以獲得,發起請求後根據響應內容即可得到地理位置資訊。
請求(request)的資訊如下:
,,,,,,],
"host":"maps.google.com",
"version":"1.1.0"}
響應(response)的資訊如下:
,"access_token":"2:61teaw-ronct1_w-:jvpp2_jq5a0l-5jk"}
3.wifi定位
其原理是首先收集每個wifi無線接入點的位置,對每個無線路由器進行唯一的標識,在資料庫中註明這些接入點的具體位置。 使用時,一旦發現有wi-fi接入點,則進入到資料中檢視匹配的記錄,進而得到位置資訊。
wifi定位主要取決於節點(node)的實體地址(mac address)。與提供telephonemanager一樣,android也提供了獲取wifi資訊的介面:wifimanager。
wifimanager wifiman = (wifimanager) getsystemservice(context.wifi_service);
wifiinfo info = wifiman.getconnectioninfo();
string mac = info.getmacaddress();
string ssid = info.getssid();
通過上面的方法,即可獲得必要的請求引數。
發出的請求(request)資訊如下:
],"host":"maps.google.com","version":"1.1.0"}
響應(response)的資訊如下:
,"access_token":"2:wrr36ynoz_d9mbw5:prerdamjxi8l76mu"}
---------以上簡單介紹了android中獲取位置的三種定位方式。實際開發中可利用android.location中的locationmanager類,該類封裝了地理位置資訊的介面,提供了gps_provider和 network_provider。
如果開發的應用需要高精確性,那麼可使用gps_provider,但這也意味著應用無法在室內使用,待機時間縮短,響應時間稍長等問題;
如果開發的應用需要快速反應,對精度要求不怎麼高,並且要盡可能節省電量,那麼使用network_provider是不錯的選擇。
這裡提一下,還有乙個 passive_provider,在實際應用中較少使用。
1.如下**就是設定從network中獲取位置:
locationmanager mlocman = (locationmanager) getsystemservice(context.location_service);
mlocman.requestlocationupdates(locationmanager.network_provider,0,0, mloclis);
需要對應的許可權:android.permission.access_coarse_location
2.如下**就是設定從gps獲取位置:
locationmanager mlocman = (locationmanager) getsystemservice(context.location_service);
mlocman.requestlocationupdates(locationmanager.gps_provider,0,0, mloclis);
需要對應的許可權:android.permission.access_fine_location
如果**裡使用了兩個 provider,則只需要乙個許可權即可:android.permission.access_fine_location。
以下是整個過程的**:
iOS獲取當前的位置
在ios中獲取當前的位置資訊,包括 維度 經度 城市 街道 路口等資訊 使用步驟 1 2 3 manager cllocationmanager alloc init manager.delegate self manager startupdatinglocation 由於在ios8中,需要開發者...
IOS獲取當前位置
ios支援三種檢測當前位置的方式 手機基站 wi fi 和gps,其中gps是經度最高的,同時也是最耗費手機電量的。一般情況下在室內是無法通過gps獲取位置資訊的,通過wi fi獲取位置的原理是通過網路提供商的ip位址資訊來獲取位置,經度不是很高,最後是通過手機基站獲取位置,手機開機後會連線附近的基...
iPhone之獲取當前位置
來自 首先,加入地圖包 介面 import import inte ce view30 uiviewcontroller end 實現 void viewdidload theregion.center locationmanager location coordinate locationmana...