安卓引入高德定位SDK文檔

引入高德定位SDK文檔

官方API接口地址

官方首頁

官方定位SDK使用說明

官方定位SDK參考手冊

官方定位SDK資源下載

引入步驟

申請Key

1. 登錄高德位置服務

登錄方式支持:賬戶月劈、手機號馍忽、淘寶型宝、支付寶、微博和QQ捂襟。

2. 驗證手機與郵箱

驗證手機與郵箱申請成為開發(fā)者咬腕,同時也可以進行企業(yè)認證,獲取更多服務葬荷。

成為個人開發(fā)成為企業(yè)開發(fā)者涨共。

3. 申請開發(fā)密鑰(key)

成為開發(fā)者之后,在控制臺的key管理中就可以申請創(chuàng)建新密鑰宠漩。

使用

1. 導入庫文件

? 庫文件下載地址

將下載的定位 SDK jar 文件復制到工程的 libs 目錄下举反,如果有老版本定位 jar 文件存在,請刪除扒吁。

2.配置 build.gradle 文件

在 build.gradle 文件的 dependencies 中配置 compile fileTree(include: ['*.jar'], dir: 'libs')火鼻。

3. 配置AndroidManifest.xml

  1. 聲明Service組件
<service android:name="com.amap.api.location.APSService"></service>
  1. 聲明權(quán)限

Android 6.0及以上系統(tǒng)可以參考Android 6.0權(quán)限說明章節(jié)

  1. <!--用于進行網(wǎng)絡定位-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <!--用于訪問GPS定位-->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <!--用于獲取運營商信息,用于支持提供運營商信息相關(guān)的接口-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    <!--用于訪問wifi網(wǎng)絡信息魁索,wifi信息會用于進行網(wǎng)絡定位-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    <!--用于獲取wifi的獲取權(quán)限融撞,wifi信息會用來進行網(wǎng)絡定位-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
    <!--用于訪問網(wǎng)絡,網(wǎng)絡定位需要上網(wǎng)-->
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <!--用于讀取手機當前的狀態(tài)-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
    <!--用于寫入緩存數(shù)據(jù)到擴展存儲卡-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <!--用于申請調(diào)用A-GPS模塊-->
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
    <!--用于申請獲取藍牙信息進行室內(nèi)定位-->
    <uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>
    
  2. 設置高德Key

<meta-data android:name="com.amap.api.v2.apikey" android:value="key">//開發(fā)者申請的key               
</meta-data>

獲取我的Key粗蔚。

4.初始化定位

在主線程中聲明AMapLocationClient類對象尝偎,需要傳Context類型的參數(shù)。推薦用getApplicationContext()方法獲取全進程有效的context鹏控。

//聲明AMapLocationClient類對象
public AMapLocationClient mLocationClient = null;
//初始化定位
mLocationClient = new AMapLocationClient(getApplicationContext());

5.配置參數(shù)并啟動定位

  1. 創(chuàng)建AMapLocationClientOption對象
//聲明AMapLocationClientOption對象
public AMapLocationClientOption mLocationOption = null;
//初始化AMapLocationClientOption對象
mLocationOption = new AMapLocationClientOption();

AMapLocationClientOption核心方法解析:

下表是設置定位參數(shù)的核心方法冬念,是以下配置參數(shù)代碼段中方法的詳細展開。

方法名 參數(shù)說明 返回值說明 方法效果 默認值
setLocationMode(AMapLocationMode locationMode) locationMode是定位類型AMapLocationMode的對象牧挣,提供三個枚舉常量分別代表三種定位模式。Hight_Accuracy:高精度定位模式醒陆;Device_Sensors:僅設備定位模式瀑构;Battery_Saving:低功耗定位模式; 返回AMapLocationClientOption類對象 V2.0.0版本起用于設置SDK定位模式 Hight_Accuracy默認高精度模式
setLocationCacheEnable(boolean isLocationCacheEnable) isLocationCacheEnable是布爾型參數(shù)刨摩,true表示使用定位緩存策略寺晌;false表示不使用。 void V2.5.0版本起啟用緩存策略澡刹,SDK將在設備位置未改變時返回之前相同位置的緩存結(jié)果呻征。 true默認啟用緩存策略
setInterval(long interval) interval是長整型參數(shù),用于設定連續(xù)定位間隔罢浇,毫秒級參數(shù)陆赋。 返回AMapLocationClientOption類對象 V2.0.0版本起例如向方法傳1000,連續(xù)定位啟動后會以1s為間隔時間返回定位結(jié)果嚷闭。 2000
setOnceLocation(boolean isOnceLocation) isOnceLocation是布爾型參數(shù)攒岛,true表示啟動單次定位,false表示使用默認的連續(xù)定位策略胞锰。 返回AMapLocationClientOption類對象 V2.0.0版本起傳入true灾锯,啟動定位,AmapLocationClient將會返回一次定位結(jié)果嗅榕。 false
setOnceLocationLatest(booleanisOnceLocationLatest) isOnceLocationLatest是布爾型參數(shù)顺饮,true表示獲取最近3s內(nèi)精度最高的一次定位結(jié)果;false表示使用默認的連續(xù)定位策略凌那。 返回AMapLocationClientOption類對象 V2.6.0版本起出入true兼雄,啟動定位,AmapLocationClient將會最近3s內(nèi)精度最高的一次定位結(jié)果案怯。 false
setNeedAddress(boolean isNeedAddress) isNeedAddress是布爾型參數(shù)君旦,true表示定位返回經(jīng)緯度同時返回地址描述(定位類型是網(wǎng)絡定位的會返回);false表示不返回地址描述。 返回AMapLocationClientOption類對象 V2.0.0版本起傳入true金砍,啟動定位局蚀,AmapLocationClient返回經(jīng)緯度的同時會返回地址描述。注意:模式為僅設備模式(Device_Sensors)時無效恕稠。 true
setMockEnable(boolean isMockEnable) isMockEnable是布爾型參數(shù)琅绅,true表示允許外界在定位SDK通過GPS定位時模擬位置,false表示不允許模擬GPS位置鹅巍。 void V2.0.0版本起傳入true千扶,啟動定位,可以通過外界第三方軟件對GPS位置進行模擬骆捧。注意:模式為低功耗模式(Battery_Saving)時無效澎羞。 false
setWifiActiveScan(boolean isWifiActiveScan) isWifiActiveScan是布爾型參數(shù),true表示會主動刷新設備wifi模塊敛苇,獲取到最新鮮的wifi列表(wifi新鮮程度決定定位精度)妆绞;false表示不主動刷新。 void V2.0.0版本起傳入true枫攀,啟動定位括饶,AmapLocationClient會驅(qū)動設備掃描周邊wifi,獲取最新的wifi列表(相比設備被動刷新會多消耗一些電量)来涨,從而獲取更精準的定位結(jié)果图焰。注意:模式為僅設備模式(Device_Sensors)時無效 false
setHttpTimeOut(long httpTimeOut) httpTimeOut是長整型參數(shù),用于設定通過網(wǎng)絡定位獲取結(jié)果的超時時間蹦掐,毫秒級技羔。 void V2.0.0版本起傳入20000,代表網(wǎng)絡定位超時時間為20秒卧抗。 30000
setProtocol(int Protocol) Protocol是整型參數(shù)堕阔,用于設定網(wǎng)絡定位時所采用的協(xié)議,提供http/https兩種協(xié)議颗味。 void V2.0.0版本起AMapLocationProtocol.HTTP代表http;AMapLocationProtocol.HTTPS代表https超陆。
  1. 選擇定位場景

    說明:該部分功能從定位SDK v3.7.0開始提供。如果開發(fā)者選擇了對應的定位場景浦马,那么則不用自行設置AMapLocationClientOption中的其他參數(shù)时呀,SDK會根據(jù)選擇的場景自行定制option參數(shù)的值,當然開發(fā)者也可以在基礎上進行自行設置晶默。實際按最后一次設置的參數(shù)值生效谨娜。

    目前支持3種定位場景的設置:簽到、出行磺陡、運動趴梢。默認無場景漠畜。

/**
     * 設置定位場景,目前支持三種場景(簽到坞靶、出行憔狞、運動,默認無場景)
     */
    mLocationOption.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.SignIn);
    if(null != locationClient){
      mLocationClient.setLocationOption(option);
      //設置場景模式后最好調(diào)用一次stop彰阴,再調(diào)用start以保證場景模式生效
      mLocationClient.stopLocation();
      mLocationClient.startLocation();
    }

AMapLocationClientOption.AMapLocationPurpos 定位場景常量如下:

枚舉常量 說明 場景配置參數(shù)說明
SignIn 簽到場景 只進行一次定位返回最接近真實位置的定位結(jié)果(定位速度可能會延遲1-3s)
Transport 出行場景 高精度連續(xù)定位瘾敢,適用于有戶內(nèi)外切換的場景,衛(wèi)星定位和網(wǎng)絡定位相互切換尿这,衛(wèi)星定位成功之后網(wǎng)絡定位不再返回簇抵,衛(wèi)星信號斷開之后一段時間才會返回網(wǎng)絡結(jié)果
Sport 運動場景 高精度連續(xù)定位,適用于有戶內(nèi)外切換的場景射众,衛(wèi)星定位和網(wǎng)絡定位相互切換碟摆,衛(wèi)星定位成功之后網(wǎng)絡定位不再返回,衛(wèi)星信號斷開之后一段時間才會返回網(wǎng)絡結(jié)果
  1. 選擇定位模式

高德定位服務包含GPS和網(wǎng)絡定位(Wi-Fi和基站定位)兩種能力叨橱。定位SDK將GPS焦履、網(wǎng)絡定位能力進行了封裝,以三種定位模式對外開放雏逾,SDK默認選擇使用高精度定位模式。

高精度定位模式:會同時使用網(wǎng)絡定位和GPS定位郑临,優(yōu)先返回最高精度的定位結(jié)果栖博,以及對應的地址描述信息。

//設置定位模式為AMapLocationMode.Hight_Accuracy厢洞,高精度模式仇让。
mLocationOption.setLocationMode(AMapLocationMode.Hight_Accuracy);

? 低功耗定位模式:不會使用GPS和其他傳感器,只會使用網(wǎng)絡定位(Wi-Fi和基站定位)躺翻;

//設置定位模式為AMapLocationMode.Battery_Saving丧叽,低功耗模式。
mLocationOption.setLocationMode(AMapLocationMode.Battery_Saving);

? 僅用設備定位模式:不需要連接網(wǎng)絡公你,只使用GPS進行定位踊淳,這種模式下不支持室內(nèi)環(huán)境的定位,需要在室外環(huán)境下才可以成功定位陕靠。注意狼犯,自 v2.9.0 版本之后集灌,僅設備定位模式下支持返回地址描述信息。

//設置定位模式為AMapLocationMode.Device_Sensors,僅設備模式绎狭。
mLocationOption.setLocationMode(AMapLocationMode.Device_Sensors);
  1. 配置定位次數(shù)

    1. 設置單次定位

      如果您需要使用單次定位,需要進行如下設置:

    //獲取一次定位結(jié)果:
    //該方法默認為false芙扎。
    mLocationOption.setOnceLocation(true);
    
    //獲取最近3s內(nèi)精度最高的一次定位結(jié)果:
    //設置setOnceLocationLatest(boolean b)接口為true负乡,啟動定位時SDK會返回最近3s內(nèi)精度最高的一次定位結(jié)果榜田。如果設置其為true,setOnceLocation(boolean b)接口也會被設置為true锻梳,反之不會箭券,默認為false。
    mLocationOption.setOnceLocationLatest(true);
    
    
    1. 自定義連續(xù)定位

    SDK默認采用連續(xù)定位模式唱蒸,時間間隔2000ms邦鲫。如果您需要自定義調(diào)用間隔:

    //設置定位間隔,單位毫秒,默認為2000ms,最低1000ms神汹。
    mLocationOption.setInterval(1000);
    
  2. 設置定位同時是否需要返回地址描述庆捺。

//設置是否返回地址信息(默認返回地址信息)
mLocationOption.setNeedAddress(true);
  1. 設置是否允許模擬軟件Mock位置結(jié)果,多為模擬GPS定位結(jié)果屁魏,默認為true滔以,允許模擬位置。
//設置是否允許模擬位置,默認為true氓拼,允許模擬位置
mLocationOption.setMockEnable(true);
  1. 設置定位請求超時時間你画,默認為30秒。
//單位是毫秒桃漾,默認30000毫秒坏匪,建議超時時間不要低于8000毫秒。
mLocationOption.setHttpTimeOut(20000);

? 注意:自 V3.1.0 版本之后setHttpTimeOut(long httpTimeOut)方法不僅會限制低功耗定位撬统、高精度定位兩種模式的定位超時時間适滓,同樣會作用在僅設備定位時。如果單次定位發(fā)生超時情況恋追,定位隨即終止凭迹;連續(xù)定位狀態(tài)下當前這一次定位會返回超時,但按照既定周期的定位請求會繼續(xù)發(fā)起苦囱。

  1. 設置是否開啟定位緩存機制

    緩存機制默認開啟嗅绸,可以通過以下接口進行關(guān)閉。

//關(guān)閉緩存機制
mLocationOption.setLocationCacheEnable(false);

? 當開啟定位緩存功能撕彤,在高精度模式和低功耗模式下進行的網(wǎng)絡定位結(jié)果均會生成本地緩存鱼鸠,不區(qū)分單次定位還是連續(xù)定位。GPS定位結(jié)果不會被緩存

6. 啟動定位

//給定位客戶端對象設置定位參數(shù)
mLocationClient.setLocationOption(mLocationOption);
//啟動定位
mLocationClient.startLocation();

7.獲取定位結(jié)果

AMapLocationListener接口只有onLocationChanged方法可以實現(xiàn)羹铅,用于接收異步返回的定位結(jié)果瞧柔,回調(diào)參數(shù)是AMapLocation。

實現(xiàn)監(jiān)聽器

//可以通過類implement方式實現(xiàn)AMapLocationListener接口睦裳,也可以通過創(chuàng)造接口類對象的方法實現(xiàn)造锅。以下為后者的舉例:
AMapLocationListener mAMapLocationListener = new AMapLocationListener(){
@Override
public void onLocationChanged(AMapLocation amapLocation) {
    
  }
}
//設置定位回調(diào)監(jiān)聽
mLocationClient.setLocationListener(mLocationListener);

之后在監(jiān)聽器的回調(diào)方法內(nèi)解析AMapLocation對象。

首先廉邑,可以判斷AMapLocation對象不為空哥蔚,當定位錯誤碼類型為0時定位成功倒谷。

if (amapLocation != null) {
    if (amapLocation.getErrorCode() == 0) {
//可在其中解析amapLocation獲取相應內(nèi)容。
    }else {
    //定位失敗時糙箍,可通過ErrCode(錯誤碼)信息來確定失敗的原因渤愁,errInfo是錯誤信息,詳見錯誤碼表深夯。
    Log.e("AmapError","location Error, ErrCode:"
        + amapLocation.getErrorCode() + ", errInfo:"
        + amapLocation.getErrorInfo());
    }
}

當定位失敗時抖格,可通過ErrCode(錯誤碼)信息來確定失敗的原因,錯誤碼列表如下:

響應碼 問題說明 問題排查策略
0 定位成功咕晋。 可以在定位回調(diào)里判斷定位返回成功后再進行業(yè)務邏輯運算雹拄。
1 一些重要參數(shù)為空,如context掌呜; 請對定位傳遞的參數(shù)進行非空判斷滓玖。
2 定位失敗,由于僅掃描到單個wifi质蕉,且沒有基站信息势篡。 請重新嘗試。
3 獲取到的請求參數(shù)為空模暗,可能獲取過程中出現(xiàn)異常禁悠。 請對所連接網(wǎng)絡進行全面檢查,請求可能被篡改兑宇。
4 請求服務器過程中的異常碍侦,多為網(wǎng)絡情況差,鏈路不通導致 請檢查設備網(wǎng)絡是否通暢顾孽,檢查通過接口設置的網(wǎng)絡訪問超時時間,建議采用默認的30秒比规。
5 請求被惡意劫持若厚,定位結(jié)果解析失敗。 您可以稍后再試蜒什,或檢查網(wǎng)絡鏈路是否存在異常测秸。
6 定位服務返回定位失敗。 請獲取errorDetail(通過getLocationDetail()方法獲仍殖!)信息并參考定位常見問題進行解決霎冯。
7 KEY鑒權(quán)失敗。 請仔細檢查key綁定的sha1值與apk簽名sha1值是否對應钞瀑,或通過高頻問題查找相關(guān)解決辦法沈撞。
8 Android exception常規(guī)錯誤 請將errordetail(通過getLocationDetail()方法獲取)信息通過工單系統(tǒng)反饋給我們雕什。
9 定位初始化時出現(xiàn)異常缠俺。 請重新啟動定位显晶。
10 定位客戶端啟動失敗。 請檢查AndroidManifest.xml文件是否配置了APSService定位服務
11 定位時的基站信息錯誤壹士。 請檢查是否安裝SIM卡磷雇,設備很有可能連入了偽基站網(wǎng)絡。
12 缺少定位權(quán)限躏救。 請在設備的設置中開啟app的定位權(quán)限唯笙。
13 定位失敗,由于未獲得WIFI列表和基站信息盒使,且GPS當前不可用崩掘。 建議開啟設備的WIFI模塊,并將設備中插入一張可以正常工作的SIM卡忠怖,或者檢查GPS是否開啟呢堰;如果以上都內(nèi)容都確認無誤,請您檢查App是否被授予定位權(quán)限凡泣。
14 GPS 定位失敗枉疼,由于設備當前 GPS 狀態(tài)差。 建議持設備到相對開闊的露天場所再次嘗試鞋拟。
15 定位結(jié)果被模擬導致定位失敗 如果您希望位置被模擬骂维,請通過setMockEnable(true);方法開啟允許位置模擬
16 當前POI檢索條件、行政區(qū)劃檢索條件下贺纲,無可用地理圍欄 建議調(diào)整檢索條件后重新嘗試航闺,例如調(diào)整POI關(guān)鍵字,調(diào)整POI類型猴誊,調(diào)整周邊搜區(qū)域潦刃,調(diào)整行政區(qū)關(guān)鍵字等。
18 定位失敗懈叹,由于手機WIFI功能被關(guān)閉同時設置為飛行模式 建議手機關(guān)閉飛行模式乖杠,并打開WIFI開關(guān)
19 定位失敗,由于手機沒插sim卡且WIFI功能被關(guān)閉 建議手機插上sim卡澄成,打開WIFI開關(guān)

當定位成功時胧洒,可在如上判斷中解析amapLocation對象的具體字段,參考如下:

amapLocation.getLocationType();//獲取當前定位結(jié)果來源墨状,如網(wǎng)絡定位結(jié)果卫漫,詳見定位類型表
amapLocation.getLatitude();//獲取緯度
amapLocation.getLongitude();//獲取經(jīng)度
amapLocation.getAccuracy();//獲取精度信息
amapLocation.getAddress();//地址,如果option中設置isNeedAddress為false肾砂,則沒有此結(jié)果列赎,網(wǎng)絡定位結(jié)果中會有地址信息,GPS定位不返回地址信息镐确。
amapLocation.getCountry();//國家信息
amapLocation.getProvince();//省信息
amapLocation.getCity();//城市信息
amapLocation.getDistrict();//城區(qū)信息
amapLocation.getStreet();//街道信息
amapLocation.getStreetNum();//街道門牌號信息
amapLocation.getCityCode();//城市編碼
amapLocation.getAdCode();//地區(qū)編碼
amapLocation.getAoiName();//獲取當前定位點的AOI信息
amapLocation.getBuildingId();//獲取當前室內(nèi)定位的建筑物Id
amapLocation.getFloor();//獲取當前室內(nèi)定位的樓層
amapLocation.getGpsAccuracyStatus();//獲取GPS的當前狀態(tài)
//獲取定位時間
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(amapLocation.getTime());
df.format(date);

AMapLocation核心方法解析

下表是AMapLocation類的核心方法粥谬,是上一章節(jié)代碼段中方法的詳細展開肛根,可在參考手冊AMapLocation類中查閱其他未展示方法。

方法 返回值 返回值說明 方法效果 備注
getLatitude() double 緯度 獲取緯度 V2.0.0版本起
getLongitude() double 經(jīng)度 獲取經(jīng)度 V2.0.0版本起
getAccuracy() float 精度 獲取定位精度 單位:米 V2.0.0版本起
getAltitude() double 海拔 獲取海拔高度信息 V2.0.0版本起
getSpeed() float 速度 單位:米/秒 V2.0.0版本起
getBearing() float 方向角 獲取方向角信息 V2.0.0版本起
getBuildingId() String 室內(nèi)定位建筑物Id 獲取室內(nèi)定位建筑物Id V3.2.0版本起
getFloor() String 室內(nèi)定位樓層 獲取室內(nèi)定位樓層 V3.2.0版本起
getAddress() String 地址描述 獲取地址描述 V2.0.0版本起模式為僅設備模式(Device_Sensors)時無此信息
getCountry() String 國家 獲取國家名稱 V2.0.0版本起模式為僅設備模式(Device_Sensors)時無此信息
getProvince() String 獲取省名稱 V2.0.0版本起模式為僅設備模式(Device_Sensors)時無此信息
getCity() String 城市 獲取城市名稱 V2.0.0版本起模式為僅設備模式(Device_Sensors)時無此信息
getDistrict() String 城區(qū) 獲取城區(qū)名稱 V2.0.0版本起模式為僅設備模式(Device_Sensors)時無此信息
getStreet() String 街道 獲取街道名稱 V2.3.0版本起模式為僅設備模式(Device_Sensors)時無此信息
getStreetNum() String 街道門牌號 獲取街道門牌號信息 V2.3.0版本起模式為僅設備模式(Device_Sensors)時無此信息
getCityCode() String 城市編碼 獲取城市編碼信息 V2.0.0版本起模式為僅設備模式(Device_Sensors)時無此信息
getAdCode() String 區(qū)域編碼 獲取區(qū)域編碼信息 V2.0.0版本起模式為僅設備模式(Device_Sensors)時無此信息
getPoiName() String 當前位置POI名稱 獲取當前位置的POI名稱 V2.0.0版本起模式為僅設備模式(Device_Sensors)時無此信息
getAoiName() String 當前位置所處AOI名稱 獲取當前位置所處AOI名稱 V2.4.0版本起模式為僅設備模式(Device_Sensors)時無此信息
getGpsAccuracyStatus() int 設備當前 GPS 狀態(tài) 獲取GPS當前狀態(tài)漏策,返回值可參考AMapLocation類提供的常量 V3.1.0版本起模式為僅設備模式(Device_Sensors)時提供此信息
getLocationType() int 定位來源 獲取定位結(jié)果來源 V2.0.0版本起可參考定位類型編碼表
getLocationDetail() String 定位信息描述 定位信息描述 V2.0.0版本起用于問題排查
getErrorInfo() String 定位錯誤信息描述 定位出現(xiàn)異常的描述 V2.0.0版本起可參考定位錯誤碼表
getErrorCode() String 定位錯誤碼 定位出現(xiàn)異常時的編碼 V2.0.0版本起可參考定位錯誤碼表

8. 停止定位

mLocationClient.stopLocation();//停止定位后派哲,本地定位服務并不會被銷毀

銷毀定位客戶端

銷毀定位客戶端之后,若要重新開啟定位請重新New一個AMapLocationClient對象掺喻。

mLocationClient.onDestroy();//銷毀定位客戶端芭届,同時銷毀本地定位服務。

常見問題

1. 企業(yè)開發(fā)者和個人開發(fā)者有什么區(qū)別感耙?

個人開發(fā)者和企業(yè)開發(fā)者在申請流程褂乍、服務調(diào)用場景和權(quán)限上都是有差別的。

  1. 申請流程

    1. 個人開發(fā)者:填寫個人信息(包括:姓名即硼、手機逃片、郵箱等),信息驗證成功后只酥,即可成為高德個人開發(fā)者褥实。

    2. 企業(yè)開發(fā)者:企業(yè)用戶需填寫企業(yè)信息并提交企業(yè)營業(yè)證照掃描件,我們會在后臺對企業(yè)資質(zhì)進行審核裂允,審核時間為3個工作日內(nèi)损离,審核通過即可成為企業(yè)開發(fā)者。

      審核期間绝编,申請企業(yè)享受個人開發(fā)者權(quán)限僻澎。

  2. 服務場景及權(quán)限

區(qū)別 個人開發(fā)者 企業(yè)開發(fā)者
場景 1、公司研發(fā)技術(shù)選型期十饥;2窟勃、新產(chǎn)品研發(fā),測試階段逗堵;3秉氧、學生、研究所或個人興趣學習研究 1砸捏、有營運資質(zhì)的企業(yè)主體谬运;2隙赁、有較高服務調(diào)用需求,如:已經(jīng)投放市場垦藏,并有一定用戶基礎的APP、網(wǎng)站或硬件產(chǎn)品伞访;
服務 1掂骏、使用開放平臺除“智能硬件定位服務”外的所有產(chǎn)品和服務(配額見下表);2厚掷、產(chǎn)品經(jīng)理提供線上技術(shù)支持(渠道:論壇弟灼、郵箱) 1级解、使用開放平臺所有服務和產(chǎn)品;2田绑、獲得更高服務調(diào)用配額(詳見下方對照表)勤哗;3、高優(yōu)采納需求反饋掩驱,提供技術(shù)支持芒划;4、優(yōu)先獲得商務支持欧穴、運營合作機會民逼;
  1. 服務調(diào)用量配額說明

您可以在我的控制臺->帳戶權(quán)限里,查看自己的帳戶身份涮帘。如果您正在申請企業(yè)權(quán)限拼苍,賬戶身份顯示:個人開發(fā)者,審核通過调缨,自動升級為企業(yè)開發(fā)者疮鲫。

如果您的企業(yè)權(quán)限未通過審核,賬戶身份顯示:個人開發(fā)者同蜻,并提示未通過原因棚点,您可重新申請。

2. 如何獲得更準確的定位湾蔓?

Android除了系統(tǒng)(基站瘫析、WiFi、GPS等下拉圖標開關(guān))的開關(guān)默责,以及Android系統(tǒng)設置選項(位置信息訪問權(quán)限)贬循,還包括手機上的安全軟件(例如360、安全管家或系統(tǒng)自帶的安全中心)針對app的定位權(quán)限設置桃序;

如果不同的設置對你的App沒有開啟定位權(quán)限杖虾,會造成不能定位或者只能夠采用一種(GPS、WiFi和基站)方式定位媒熊,導致定位精度達不到要求奇适。

3. 為什么設備無法定位?

無法定位的原因有很多種芦鳍,您可以通過定位SDK的AMapLocation類提供的getErrorCode()方法獲取錯誤碼信息嚷往;通過getLocationDetail()方法和getErrorInfo()方法獲取定位和錯誤信息。

可根據(jù)錯誤碼對應參考錯誤碼表柠衅。

  1. 網(wǎng)絡問題

    多為網(wǎng)絡不通暢皮仁,或者網(wǎng)絡傳輸劫持問題導致。

    解決辦法:檢查網(wǎng)絡是否通暢,更換新網(wǎng)絡請求定位贷祈,或者將設置的定位超時時間延長(SDK默認值30秒)趋急。

  2. 室內(nèi)發(fā)起GPS定位

    室內(nèi)環(huán)境GPS無法鏈接衛(wèi)星,需要到室外環(huán)境才可以正常定位势誊。

    解決辦法:高精度模式下呜达,處于室內(nèi)環(huán)境時請確保設備打開了WIFI(可不鏈接)模塊,網(wǎng)絡通暢粟耻,SDK會采用網(wǎng)絡進行定位闻丑;僅設備模式下,請到室外進行定位勋颖。

  3. Key錯誤

    請參考:Key錯誤問題解決辦法 解決嗦嗡。

  4. 計算位置失敗

    錯誤碼會為 6,可參考:位置計算失敗解決辦法 解決饭玲。

  5. 其他問題

    其他錯誤很少出現(xiàn)侥祭,如果出現(xiàn)的話您可以參考錯誤碼表給出的解決辦法進行解決。

4. 如何檢測Android手機的定位權(quán)限茄厘?

Android 6.0 之前的系統(tǒng)級定位權(quán)限檢測接口存在權(quán)限判斷失準的問題矮冬,這導致如果單純依賴系統(tǒng)接口進行定位權(quán)限判斷會造成大量設備上定位權(quán)限檢測不準的情況出現(xiàn)。

所以在 Android 定位SDK 2.9.0 版本中增加了錯誤碼13次哈,錯誤碼13包含一種判斷和兩層意思:

一種判斷是校驗多種定位數(shù)據(jù)源是否存在(或的關(guān)系)胎署;兩層意思是指13本身有可能代表設備定位權(quán)限缺失,有可能代表設備定位數(shù)據(jù)源缺失窑滞。因為當定位權(quán)限缺失時(無論系統(tǒng)級定位權(quán)限檢測接口是否準確返回)定位數(shù)據(jù)源一定會缺失琼牧,反之則不是。

如果SDK明確檢查出定位權(quán)限缺失時會返回錯誤碼12哀卫,如果沒有檢查出來定位權(quán)限缺失巨坊,但此時所有定位數(shù)據(jù)源又都不可用,則會返回13此改。無論返回的是12或者是13趾撵,都說明設備現(xiàn)在所處環(huán)境不足以完成定位功能。

所以可以對定位 SDK 的錯誤碼12和13做聯(lián)合判斷共啃,達到檢測定位權(quán)限的效果占调。

5. GPS定位時返回的地址有可能為空,怎么辦移剪?

為了保證定位速度究珊,當定位類型為GPS時,定位SDK內(nèi)部獲取逆地理信息采用的是異步方式(這種方式有可能造成第一次GPS定位時沒有逆地理信息挂滓,這樣就會造成獲取不到地址信息的情況苦银。
低功耗定位模式不受影響,高精度和僅設備定位模式均有可能出現(xiàn)這種情況赶站。

如果業(yè)務對地址信息特別依賴的話幔虏,建議定位SDK返回的經(jīng)緯度信息之后通過以下兩種方式中的任意一種獲取地址信息:

1、如果APP中集成有高德地圖SDK贝椿,建議使用地圖SDK中逆地理接口獲取地址信息想括,具體方法請參考:逆地理編碼

2、如果APP中沒有集成高德地圖SDK烙博,建議使用Web服務API的逆地理編碼獲取地址信息瑟蜈,開發(fā)指南請參考:逆地理編碼

6. 是否免費? 調(diào)用有次數(shù)限制嗎?

目前高德地圖SDK完全免費渣窜,且不限制日配額铺根。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市乔宿,隨后出現(xiàn)的幾起案子位迂,更是在濱河造成了極大的恐慌,老刑警劉巖详瑞,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掂林,死亡現(xiàn)場離奇詭異,居然都是意外死亡坝橡,警方通過查閱死者的電腦和手機泻帮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來计寇,“玉大人锣杂,你說我怎么就攤上這事》” “怎么了蹲堂?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長贝淤。 經(jīng)常有香客問我柒竞,道長,這世上最難降的妖魔是什么播聪? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任朽基,我火速辦了婚禮,結(jié)果婚禮上离陶,老公的妹妹穿的比我還像新娘稼虎。我一直安慰自己,他們只是感情好招刨,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布霎俩。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪打却。 梳的紋絲不亂的頭發(fā)上杉适,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機與錄音柳击,去河邊找鬼猿推。 笑死,一個胖子當著我的面吹牛捌肴,可吹牛的內(nèi)容都是我干的蹬叭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼状知,長吁一口氣:“原來是場噩夢啊……” “哼秽五!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起饥悴,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤筝蚕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后铺坞,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體起宽,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年济榨,在試婚紗的時候發(fā)現(xiàn)自己被綠了坯沪。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡擒滑,死狀恐怖腐晾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丐一,我是刑警寧澤藻糖,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站库车,受9級特大地震影響巨柒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜柠衍,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一洋满、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧珍坊,春花似錦牺勾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翻具。三九已至,卻和暖如春回还,著一層夾襖步出監(jiān)牢的瞬間裆泳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工懦趋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疹味。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓仅叫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親糙捺。 傳聞我的和親對象是個殘疾皇子诫咱,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容