LoginSignup
3
0

More than 3 years have passed since last update.

HMS CoreのMap KitとSite KitにおけるAPI Keyの利用の注意点

Last updated at Posted at 2020-09-13

背景

ファーウェイのHMSを使って、GMSなしでGoogleマップアプリと同じものを作ってみました。最終的には無事に作れました。しかし、作っているときにはまった部分があったので、その原因を書こうと思います。

アプリのターゲット機能

機能 キット
地図表示 Map Kit
ジェスチャー Map Kit
コンパス Map Kit
ズーム Map Kit
現在地 Location Kit
キーワード検索 Site Kit
ロケーション情報検索 Site Kit

APIキーの受け渡し

特定なキットを利用するのに、APIキーを渡さなければなりません。
今回利用するキットはMap Kit、Location Kit、Site Kitです。Map KitとSite KitではAPIキーの受け渡しが必要です。
下記はHMSの公式ドキュメントに書かれたAPIキーの渡し方です。

Map Kit

方法1

// In the entrance class (inherited from android.app.Application) of the app,
// call the setApiKey method in the overridden onCreate() method. 
public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // Set the API key.
        MapsInitializer.setApiKey("Your API Key");
    }
}

方法2

// FragmentまたはMapViewの中でAPIキーを渡す
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Log.i(TAG, "onCreate: ");
        super.onCreate(savedInstanceState);
        // Set the API key before calling setContentView.
        MapsInitializer.setApiKey("Your API Key");
        setContentView(R.layout.basic_demo);
    }

簡単にいうと、MapsInitializer.setApiKey("Your API Key")を実行するというわけです。

Site Kit

// Declare a SearchService object.
private SearchService searchService; 
// Instantiate the SearchService object.
searchService = SearchServiceFactory.create(this, "API key");

実行結果(失敗)

上記の方法に従って実行してみると…

マップは表示できました。
device-2020-09-13-164940.png

しかし、キーワード検索機能は動きませんでした。
device-2020-09-13-165051.png

原因

原因はSite Kitに渡すAPIキーです。Map KitではAPIキーをそのまま渡せばよいですが、Site Kitの場合、APIキーをエンコードしてから渡さなければなりません。

実行結果(成功)

次のようにソースコードを直して試してみたら…

searchService = SearchServiceFactory.create(this, URLEncoder.encode("API key", "utf-8"));

検索結果が出ました。
device-2020-09-13-170255.png

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0