地図のカスタマイズ
ユーザーにとって重要 な特定の表示サイズ、ユースケース、ブランディング、またはハイライトオブジェクトに合わせてマップを最適化する場合でも、 HERE SDK マップのカスタマイズ機能を使用すると、マップ ビューのレンダリング特性を詳細に制御できます。
このセクションでは、独自のマップの外観を作成するために必要なコンポーネントと概念について説明します。
地図のスキーム
マップをカスタマイズするに NMACustomizableScheme
は、まずマップ ビューからオブジェクトを取得します。 このオブジェクトを使用すると、マップを変更するためのプロパティを取得および設定できます。 建物、ランドフィーチャ、道路などのマップオブジェクトの色、幅、長さ、およびその他のプロパティを変更できます。 カスタマイズしているスキームが現在影響を受けるズーム レベルにあり、アクティブである場合、プロパティへの変更が表示されます。
作成したカスタムスキームは永続的には保存されませんが、マップ ビューオブジェクトがメモリ内にある限り有効になります。
NMAMapView
NMACustomizableScheme
NMACustomizableVariable
まず、マップ ビューからカスタムスキームを作成または取得してから、それぞれのプロパティを取得 NMACustomizableVariable
し、最後にアクセサメソッドを使用してプロパティを変更します。
GitHub でのマップのカスタマイズ例
この機能を示す例について は、 https://github.com/heremaps/ (Obj-C) および https://github.com/heremaps/ (Swift) を参照してください。
スキームのカスタマイズ
マップのカスタマイズは、 NMANormalDayScheme
NMANormalNightScheme
出発点として使用する定義済みのスキームのいずれか ( およびなど ) を選択することによって開始されます。 これらの定義済みのスキームは、自身ではカスタマイズできませんが、カスタムスキームの派生元となる初期値を提供します。 この基本スキームへのアクセス権およびカスタマイズ権限を持っている必要があります。
すでに把握している事前定義済みのスキームの例は、次のとおりです ( それぞれ、通常日、通常夜間 ) 。
![]() | ![]() |
最初のマップ スキームカスタマイズを作成しています
この例では、 float プロパティを変更し CountryBoundary_Width
て、次のレンダリング効果を発生させます。


この簡単な変更を実装する方法を学習しましょう。 まず、どのスキームをベースにするかを決定したら NMACustomizableScheme
、マップ ビューメソッドを使用してオブジェクトを作成します。
NMACustomizableScheme * customScheme;
customScheme = [self.mapView createCustomizableSchemeWithName:@"myCustomScheme" basedOnScheme: NMAMapSchemeNormalDay];
カスタマイズ可能なスキームを作成すると、マップ ビューオブジェクトが削除されない限り、次のコードを使用していつでも再度取得できます。 カスタムスキームは、取得元の特定のマップ ビューに対してのみ作成され、有効になります。
NMACustomizableScheme * customScheme = [self.mapView.getCustomizableSchemeWithName:@"myCustomScheme"];
属性を設定する前に、変更を有効にするズーム範囲を定義します。 この目的のために、ヘルパークラス NMAZoomRange
には、最小および最大のズーム レベル値を使用することが提供されています。
NMAZoomRange * myZoomRange = [[NMAZoomRange alloc] initWithMinZoomLevel:0.0f and toZoomLevel:20.0f];
これで、値の読み取りと設定を行う準備ができました。 次の例で NMASchemeCountryBoundaryWidth
は、プロパティを読み取り、変更します。
// to read a primitive (float) property value: provide the property name and the zoom level
float returnValue = [customScheme floatForProperty:NMASchemeCountryBoundaryWidth forZoomLevel: 10.0f];
// to set a float property: provide the property name, new value, and the previously created zoom range (NMAZoomRange)
[customScheme setFloatProperty NMASchemeCountryBoundaryWidth withValue:10.0f forZoomRange: myZoomRange];
上記のように、 Integer や Float などの単純なタイプの場合、オブジェクトを修正する必要はありません。 color などの型の場合、メソッドは操作しやすいようにオブジェクトを返します。
最後に、マップでカスタムスキームをアクティブ化できます。
[self.mapView setMapScheme:@"myCustomScheme"];
マップが次のように表示されます。

使用可能なカスタマイズ可能なプロパティを一覧表示します
使用可能なすべてのプロパティは NMACustomizableVariable.h
、ヘッダーファイルにあります。 各プロパティタイプについて NS_ENUM
、が存在します。これは、プロパティの識別子として get メソッドおよび set メソッドに渡されます。 ヘッダーファイルを参照して、そのタイプを確認できます。
プロパティのタイプごとに、 integerForProperty:
、 floatForProperty:
、などのアクセサのセットを 1 つ使用 colorForProperty:
できます。 setter メソッドについても同じことが言えます。
NMACustomizableVariable
には、 カスタマイズのために HERE SDK がサポート するすべてのプロパティ(キーとして名前を持つすべてのNMACustomizableVariable
オブジェクトを含む)を含むNSDictionary
を返す静的メソッドallAvailableProperties
もあります。 これは、すべてのプロパティをプログラムで反復処理する場合に特に便利です。 propertyType
NMACustomizableVariable
オブジェクトから読み取ることで、常にプロパティタイプを検索できます。 -
NMACustomizableVariable
- 整数や float などのプリミティブ型に使用されるベースクラス -
NMACustomizableColor
-NMACustomizableVariable
カラープロパティを処理するメソッドで拡張します
色のプロパティの変更
次の例で NMASchemeBuildingColor
は、プロパティの変更方法を確認できます。


カラーマップの属性を変更するには、まずカスタムカラーオブジェクトを取得 NMACustomizableColor
してから変更します。
NMACustomizableColor *buildingColor = [customScheme colorForProperty:NMASchemeBuildingColor forZoomLevel:2.0f];
[buildingColor setRed:100.0f];
[buildingColor setGreen:100.0f];
[buildingColor setBlue:133.0f];
// now apply the changes using the previously created zoom range
[customScheme setColorProperty:buildingColor forZoomRange:myZoomRange];