手把手教你玩轉HarmonyOS版地圖應用開發

​一、導讀

7月31日,華爲HarmonyOS開發者日將在杭州舉行。爲了方便更多開發者,高德開放平臺地圖SDK已在業內率先實現鴻蒙化遷移和重構,全面適配HarmonyOS並面向開發者免費發佈。開發者可到高德開放平臺官網瞭解更多內容,獲取版本下載、開發文檔、常見問題等支持。

訪問高德開放平臺:https://lbs.amap.com/

在今年6月2日,華爲就正式發佈了HarmonyOS。由於HarmonyOS在兼容Android上有特殊要求,如果APP應用是用Android API開發,開發者可以直接使用Android的SDK。

但如果APP用了HarmonyOS的API開發,就不能用Android的SDK而需要使用HarmonyOS版本的SDK。

爲了方便開發者在HarmonyOS的相應設備中進行LBS服務的開發,高德開放平臺率先進行了HarmonyOS適配,首批適配範圍包括地圖和搜索SDK,支持嵌入搭載HarmonyOS的手機、Pad及其他智能終端設備。

二、HarmonyOS地圖SDK特性介紹

與高德開放平臺Android地圖SDK平滑切換

  • 已集成高德開放平臺Android地圖SDK的開發者可無縫切換到HarmonyOS地圖SDK,無額外開發量。HarmonyOS與Android系統間的接口變化由高德開放平臺SDK適配層消化,SDK對外接口保持不變。
  • 高德底層引擎對接HarmonyOS NDK,上層代碼全面對接HarmonyOS SDK,所有系統接口均使用HarmonyOS API。

繼承高德開放平臺Android/iOS地圖SDK功能亮點

  • 開發者可以通過高德開放平臺API和SDK,輕鬆完成地圖的構建工作,將地圖精緻地呈現在您的應用中。地圖SDK不僅提供豐富的地圖覆蓋物繪製能力,也支持搜索、多種路徑規劃、座標轉換、距離測量、面積計算等功能。

  • 適配HarmonyOS後的地圖SDK依舊支持與自定義地圖SaaS平臺等周邊工具配合使用,開發者可以在平臺中定製區域面、建築物、水系、天空、道路、標註、行政邊界共7大類40餘種地圖元素,靈活設計心儀的地圖樣式。更多地圖SDK基礎能力、自定義、可視化能力詳情請參考高德開放平臺官網。

HarmonyOS版地圖SDK整體框架

HarmonyOS和Android系統差異很大,幾乎所有的API都有調整,不少API都調整了實現方案,所以不能通過改包名來實現適配。我們將原生SDK中所有調用Android的代碼均切換爲適配層,在適配層將SDK的接口一一適配到HarmonyOS接口。

HarmonyOS版地圖SDK整體框架大致如下:

三、如何集成-從零開始

第一步 搭建HarmonyOS開發環境

完成DevEco Studio安裝、環境配置和工程創建,參考HarmonyOS官網說明:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/start-overview-000000000002960

第二步 配置應用的簽名信息

應用工程創建完成後,需要配置簽名信息,纔可以使用真機調試和發佈應用。

第三步 獲取應用的appId

配置完簽名信息之後,就可以獲取當前應用的appId了,這個appId主要用於申請高德的apiKey,請確定最終發佈應用的appId,防止最終高德SDK鑑權失敗。

通過代碼獲取應用的appId方式如下:

getApplicationContext().getBundleManager().getBundleInfo(getBundleName(), 0).getAppId()

注意:目前通過DevEco Studio連接雲真機獲取到的appId不全,只獲取到了"包名_", 使用雲真機調試高德地圖SDK時會導致鑑權不通過。正確的appId形式爲:"包名_簽名信息", 例如:com.amap.demo_BGtGgVB3ASqU7XXXXV2/zhoYh6tFQHAd5DASWVTEAgvZfzrEGljjs=

第四步 在高德開放平臺官網控制檯申請API Key

創建新應用

從開放平臺官網右上角入口-控制檯,創建一個新應用。如果您之前已經創建過應用,可直接跳過這個步驟。

 

添加新Key

在創建的應用上點擊"添加新Key"按鈕,在彈出的對話框中,依次:輸入應用名名稱,選擇綁定的服務爲“Harmony平臺SDK”,輸入AppID,如下圖所示:

需要注意:1個Key只能用於一個應用(多渠道安裝包屬於多個應用),1個Key在多個應用上使用會出現服務調用失敗。

在閱讀完高德地圖API服務條款後,勾選此選項,點擊“提交”,完成Key的申請,此時您可以在所創建的應用下面看到剛申請的Key了。

第五步 在代碼中設置申請的Key

請使用API的方式將申請的高德API Key設置給高德地圖SDK。

/**
 * 動態設置apiKey。
 *
 * @param apiKey 在高德官網上申請的apiKey。
 */
MapsInitializer.setApiKey(String apiKey)

注意:請確保在調用任何高德地圖SDK的接口之前將API Key設置給高德地圖SDK,建議放到Application的初始化之中。

完成以上5步之後,就可以愉快的使用HarmonyOS版高德地圖SDK了。

四、如何使用-創建地圖

使用地圖SDK之前,需要在config.json文件中進行相關權限設置,確保地圖功能可以正常使用。

第一步 配置config.json

首先,聲明權限。

...
"reqPermissions": [
      {
        "usedScene": {
          "ability": [
            "com.example.harmonysearchsdk.MainAbility"
          ],
          "when": "always"
        },
        "reason": "request internet",
        "name": "ohos.permission.INTERNET"
      }
    ]
...

第二步 向工程中添加地圖開發包

將har包放入libs目錄下,依次添加依賴。

dependencies {
    implementation files("libs/xxx.har")
    //...
}

或者直接使用引入libs下所有har包的方式:

dependencies {
  implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
    //...
}

第三步 初始化地圖容器

設置Key

獲取Key方式請參考上方“從零開始”章節第四步。

MapsInitializer.setApiKey("您的key");

 

創建MapView

public class BasicMapDemoSlice extends Ability {

    private MapView mapView;

    @Override
    protected void onStart(Intent intent) {
        super.onStart(intent);
        initMapView();
    }

    private void initMapView() {
        mapView = new MapView(this);

        mapView.onCreate(null);
        mapView.onResume();
        DirectionalLayout.LayoutConfig config = new DirectionalLayout.LayoutConfig(
                DirectionalLayout.LayoutConfig.MATCH_PARENT, DirectionalLayout.LayoutConfig.MATCH_PARENT);
        mapView.setLayoutConfig(config);
        super.setUIContent(mapView);
    }

    @Override
    protected void onStop() {
        super.onStop();
        if (mapView != null) {
            mapView.onDestroy();
        }
    }
}

初始化地圖並獲取AMap對象

AMap aMap = mapView.getMap();
aMap.setOnMapLoadedListener(new AMap.OnMapLoadedListener() {
    @Override
    public void onMapLoaded() {
    // todo
    }
});

至此就可以看到地圖展示,並且拿到AMap對象後,就可以往地圖上添加點線面等覆蓋物了。

五、獲取更多詳情和開發支持

訪問高德開放平臺:https://lbs.amap.com/

獲取HarmonyOS版高德地圖SDK下載、開發文檔、Demo等開發支持:https://lbs.amap.com/api/harmonyos-sdk/summary/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章