カスタムレイヤーのスタイルガイド
カスタムスタイルを使用して事前定義されたスキームおよびカスタムラスター、ライン、ポリゴンまたはポイントレイヤーの外観を実行時にカスタマイズできます。カスタムスタイルはJSONベースのStyle記述と併せて一連のAPIを使用することで制御できます。
注これはこの機能のベータリリースであるため、いくつかのバグや予期しない動作が発生する可能性があります。関連する API は、廃止のプロセスを経ずに、新しいリリースに変更される可能性があります。
Style はカスタム レイヤー スタイルを抽象化したものです。
JsonStyleFactoryを使用して JSON 文字列からStyleを作成します。MapLayerBuilder.withStyle(Style)メソッドを使用して、MapLayerの作成時にカスタム スタイルを指定します。MapLayer.setStyle(Style)メソッドを使用して、実行時にカスタム レイヤー スタイルを更新します。
JSON スタイルの構文については、以下で詳しく説明します。
HERE SDK を使用して、以下の手順に従ってカスタム レイヤーの外観をカスタマイズします。
- 適切な手法を使用して、カスタム レイヤーの JSON スタイルの文字列を作成します。
カスタム ラスター レイヤーのスタイル テクニック リファレンスで説明されている
rasterテクニックを使用します。
let myCustomLayerStyle = """
{
"styles": [
{
"layer": "my custom layer",
"technique": "raster",
"attr": {
"opacity": 1.0
}
}
]
}
"""カスタム ライン レイヤーのスタイル テクニック リファレンスで説明されている
lineテクニックを使用します。
let myCustomLayerStyle = """
{
"styles": [
{
"layer": "my custom layer",
"technique": "line",
"attr": {
"width": 5.0,
"color": "#ff0000ff"
}
}
]
}
"""
- Use `JsonStyleFactory` to create a custom `Style` out of the style string.
```swift
let layerStyle = JsonStyleFactory.createFromString(myCustomLayerStyle);- 新しく作成した
Styleを使用してカスタム レイヤーを作成します。
let mapLayer = MapLayerBuilder()
...
.withName("my custom layer")
.withStyle(layerStyle)
.build();- または、新しく作成した
Styleを既存のカスタム レイヤーに割り当てます。
myCustomLayer.setStyle(layerStyle);スタイル
スタイルは、レンダリングされた地物の外観を定義します。これは、すべての地物のレンダリング テクニックとテクニック パラメーターに関する情報を提供して行います。スタイルは、次のセクションで説明するスキーマを使用して JSON ファイルで定義します。
スタイル ルール
最上位の主な styles にはスタイルの記述が含まれます。styles の値はスタイル ルールの配列です。
概念上、各スタイル ルールは個別の描画呼び出しを表します。1 つのレイヤー内に 2 つのスタイル ルールがある場合、レイヤー フィーチャーが 2 回描画されることを意味します。
レイヤー
各スタイル ルールは layer キーを介してレイヤーに関連付けられます。1 つのレイヤーを複数のスタイル ルールに関連付けることができます。
次のスタイルには、layer1 にスタイル ルールが 2 つあります。
{
"styles" : [
// first style rule:
{
"layer": "layer1"
...
},
// second style rule:
{
"layer": "layer1"
...
},
]
}
注
styles内のスタイル ルールは、任意の順序で配置できます。
いつ
スタイル ルールは、そのオブジェクトの when フィルターが true の場合にのみオブジェクトに適用されます。when は任意であり、指定されていない場合は常に true になります。
オブジェクトを区別するために、when 式はオブジェクト データ属性を使用します。データ属性は、オブジェクトに添付された名前/値のペアです。オブジェクトは任意の数のデータ属性を持つことができます。スタイル システム自体は、特定のデータ属性が存在することを期待する性質を持ちません。ただし、特定のデータ ソースのスタイルを記述する場合は、データ スキームに大きく依存します。
以下の例では、スタイル ルールに when が含まれています。
{
"styles" : [
{
"layer": "layer1"
"when": ["==", ["get", "kind"], "a special kind"]
...
}
]
}when 値は、kind という名前のオブジェクト データ属性を文字列定数 a special kind と比較するブール式です。
テクニック
technique はすべてのスタイル ルールに必ず指定します。technique は、地物のジオメトリーがレンダリング可能な地物にどのように変換されるか、またどのようにレンダリングされるか (どのシェーダーが使用され、どのようなユニフォームが設定されるか) を定義します。
ルールでは、technique の名前に加えて attr キーの下にテクニック属性値のセットを提供することもできます。
{
"styles": [
{
"layer": "layer1",
"technique": "raster",
"attr": {
"opacity": 0.5
}
}
]
}
上の例では、technique がraster に設定され、1 つのテクニック属性 opacity が 0.5 に設定されています。
利用可能なテクニックとその属性の完全なリストについては、スタイル テクニック リファレンスを参照してください。
式
式は when フィルターとテクニック attribute values の値を定義します。
式は JSON ではarray として表されますが、最初の引数は式 name であり、残りのエントリーは式引数です。ほとんどの場合、引数は式でもあります。
[name, argument1, ...argumentN]例:1+2 は ["+", 1, 2] として記述されます。
式リファレンスを参照してください。
定義
よく使用する式はdefinitionsで一度定義しておき、["ref", name]の式を使用することで、どの式でも参照することができます。
{
"definitions": {
"definition1": "#ff0000",
"definition2": ["ref", "definition1"] // Definition value is also an expression
],
"styles": [
{
"layer": "layer1",
"technique": "line",
"attr": {
"color": ["ref", "definition2"] // "#ff0000"
}
},
}
}スタイルクラスを使用してマップスキームをカスタマイズする
HERE Style Editorを使用して、カスタムマップスキームを作成できます。実行時には、カスタムスキームと事前定義されたMapSchemeスタイルの両方を変更できます。たとえば、ユーザー設定に基づいて、すべてのラベルのフォントサイズを大きくすることができます。また、ラスター、ライン、ポリゴン、ポイントレイヤーの外観をカスタマイズできます。
すべてのMapSchemeスタイルがサポートされています。
**注:**HERE Style Editorでは、日本または他の国々 (ROW) の地図地域向けにスタイルを設定できます。日本独自のスタイル設定は、新しい地図スタイル設定の一環として有効になります。新しい地図スタイルのダッシュボード下部にあるスライド式のトグルで、日本独自のスタイル情報を有効にしたり、無効にしたりできます。レイヤーパネルの上部にあるチェックボックスを使用すると、エディタパネルの表示が、スタイル設定の対象地域 (グローバルと日本) の間で切り替わります。このチェックボックスの設定は、エディタパネルのみに影響します。マップビューには、開発者ガイドに記載されている各地域のスタイル情報に合わせて調整された複合スタイルが常に表示されます。詳細については、「HSE開発者ガイド」の日本のセクションを参照してください。
let myStyleCustomization = """
{
"definitions": {
"General.Labels.Scale.Factor": 1.5
}
}
"""
let styleUpdate = JsonStyleFactory.createFromString(myStyleCustomization)
mapView.hereMap.style.update(styleUpdate)事前定義済みのマップスタイルでは、次のスタイルのカスタマイズがサポートされています。
General.Labels.Scale.Factor:マップ ラベル (アイコンとテキスト) の拡大縮小に使用される係数。デフォルト値は 1 です。1 より小さい値を指定するとマップ ラベルが縮小され、1 より大きい値を指定するとマップ ラベルが拡大されます。0 未満の値または非常に大きな値はサポートされず、未定義動作が生じる可能性があります。null値の場合はデフォルトに戻ります。

今月の更新