次の方法で共有


イメージ テンプレートの使用方法

画像は、Azure Maps Web SDK 内の HTML マーカーおよび のさまざまなレイヤーで使用できます。

  • シンボル レイヤーでは、画像アイコンを使用してマップ上にポイントをレンダリングできます。 線のパスに沿ってシンボルをレンダリングすることもできます。
  • 塗りつぶしパターン画像を使用して多角形レイヤーをレンダリングできます。
  • HTML マーカーでは、画像やその他の HTML 要素を使用してポイントをレンダリングできます。

レイヤーを使用して良いパフォーマンスを確保するには、レンダリングする前に、画像をマップ画像スプライト リソースに読み込みます。 SymbolLayer の IconOptions では、既定でいくつかの色の数個のマーカー画像をマップ画像スプライトに事前に読み込みます。 これらのマーカー画像などは、SVG テンプレートとして使用できます。 カスタム スケールを使用して画像を作成するために使用したり、顧客の第一および第二の色として使用したりすることができます。 合計で 42 の画像テンプレートが用意されています。27 個の記号アイコンと 15 個の多角形の塗りつぶしパターン。

画像テンプレートをマップ画像スプライト リソースに追加するには、map.imageSprite.createFromTemplate 関数を使用します。 この関数では、最大 5 つのパラメーターを渡すことができます。

createFromTemplate(id: string, templateName: string, color?: string, secondaryColor?: string, scale?: number): Promise<void>

id は、作成する一意の識別子です。 id は、マップ画像スプライトに追加されるときに、画像に割り当てられます。 レイヤーでこの識別子を使用し、レンダリングする画像リソースを指定します。 templateName では、使用する画像テンプレートを指定します。 color オプションでは画像の原色を設定し、secondaryColor オプションでは画像の補色を設定します。 scale オプションでは、画像スプライトに適用する前に画像テンプレートを拡大縮小します。 画像が画像スプライトに適用されると、それが PNG に変換されます。 上質なレンダリングを確保するには、画像テンプレートをレイヤーで拡大するよりも、拡大してからスプライトに追加することをお勧めします。

この関数では、画像が画像スプライトに非同期的に読み込まれます。 したがって、この関数は、それが完了するまで待機できる Promise を返します。

次のコードは、組み込みテンプレートのいずれかから画像を作成し、それをシンボル レイヤーと共に使用する方法を示しています。

map.imageSprite.createFromTemplate('myTemplatedIcon', 'marker-flat', 'teal', '#fff').then(function () {

   //Add a symbol layer that uses the custom created icon.
   map.layers.add(new atlas.layer.SymbolLayer(datasource, null, {
      iconOptions: {
         image: 'myTemplatedIcon'
      }
   }));
});

シンボル レイヤーと共に画像テンプレートを使用する

画像テンプレートをマップ画像スプライトに読み込んだ後は、iconOptionsimage オプションで画像リソース ID を参照することで、シンボル レイヤーにシンボルとしてレンダリングすることができます。

組み込みのアイコン テンプレートを含むシンボル レイヤー のサンプルでは、次のスクリーンショットに示すように、marker-flat イメージ テンプレートを使用してシンボル レイヤーを描画し、第一の色が青緑で第二の色が白を使用してこれを行う方法を示します。

第一の色が青緑で第二の色が白のマーカーフラットイメージテンプレートを使用したシンボル レイヤーを表示するマップのスクリーンショット。

このサンプルのソース コードについては、「組み込みのアイコン テンプレートを使用したシンボル レイヤーのサンプル コード」を参照してください。

線のパスに沿って画像テンプレートを使用する

画像テンプレートをマップ画像スプライトに読み込んだ後は、LineString をデータ ソースに追加し、シンボル レイヤーを lineSpacing オプションと共に使用し、iconOptionsimage オプションで画像リソースの ID を参照することで、線のパスに沿ってレンダリングすることができます。

組み込みのアイコン テンプレートを含む線レイヤーでは、これを行う方法を示します。 以下のスクリーンショットに示されているように、マップ上でピンク色の線をレンダリングし、第一の色がドジャー ブルーで第二の色が白の car 画像テンプレートを使用して、シンボル レイヤーが使用されています。 このサンプルのソース コードについては、「組み込みのアイコン テンプレートを使用した線レイヤーのサンプル コード」を参照してください。

マップ上にルートを示す線レイヤーを表示し、ルート上に車のアイコンを表示したスクリーンショット。

ヒント

画像テンプレートが上向きの場合は、線と同じ方向を指すようにするには、シンボル レイヤーの rotation アイコン オプションを 90 に設定します。

多角形レイヤーで画像テンプレートを使用する

画像テンプレートをマップ画像スプライトに読み込んだ後は、レイヤーの fillPattern オプションで画像リソース ID を参照することで、多角形レイヤーに塗りつぶしパターンとしてレンダリングすることができます。

次のスクリーンショットに示すように、組み込みのアイコン テンプレートを使用して多角形を塗りつぶすサンプルでは、赤の第一の色と透明な第二の色を持つ dot イメージ テンプレートを使用して、多角形レイヤーをレンダリングする方法を示します。 このサンプルのソース コードについては、「組み込みのアイコン テンプレートを使用した多角形の塗りつぶしのサンプル コード」を参照してください。

第一の色が赤で第二の色が透明のドットイメージテンプレートを使用した多角形 レイヤーを表示するマップのスクリーンショット。

ヒント

塗りつぶしパターンの第二の色を設定すると、基のマップでプライマリ パターンが提供されることを確認しやすくなります。

HTML マーカーと共に画像テンプレートを使用する

画像テンプレートは、altas.getImageTemplate 関数を使用して取得できます。また、HTML マーカーのコンテンツとして使用できます。 このテンプレートは、マーカーの htmlContent オプションに渡してから、colorsecondaryColor、および text オプションを使用してカスタマイズすることができます。

組み込みのアイコン テンプレートを含む HTML マーカー のサンプルでは、次のスクリーンショットに示すように、赤い第一の色、ピンクの 第二の色、テキスト値が "00" の marker-arrow テンプレートを使用 してこれを示します。 このサンプルのソース コードについては、「組み込みのアイコン テンプレートを使用した HTML マーカーのサンプル コード」を参照してください。

マーカー矢印のテンプレートが表示されたマップで、赤の第一の色、ピンクの第二の色、赤の矢印の中のテキスト値が 00 であることを示すスクリーンショット。

ヒント

画像テンプレートはマップの外でも使用できます。 getImageTemplate 関数からは {color}{secondaryColor}{scale}{text} プレースホルダーのある SVG 文字列が返されます。 これらのプレースホルダーを置換し、有効な SVG 文字列を作成します。 その後、SVG 文字列を HTML DOM に直接追加するか、それをデータ URI に変換し、イメージ タグに挿入できます。 次に例を示します。

//Retrieve an SVG template and replace the placeholder values.
var svg = atlas.getImageTemplate('marker').replace(/{color}/, 'red').replace(/{secondaryColor}/, 'white').replace(/{text}/, '').replace(/{scale}/, 1);

//Convert to data URI for use in image tags.
var dataUri = 'data:image/svg+xml;base64,' + btoa(svg);

再利用可能なカスタム テンプレートを作成する

アプリケーションの異なるモジュール内で同じアイコンを使用する場合、またはさらに画像テンプレートを追加するモジュールを作成する場合、Azure Maps Web SDK からこれらのアイコンを簡単に追加および取得できます。 以下の静的関数は atlas 名前空間で使用します。

名前 返り値の種類 説明
addImageTemplate(templateName: string, template: string, override: boolean) カスタム SVG 画像テンプレートを atlas 名前空間に追加します。
getImageTemplate(templateName: string, scale?: number) string 名前を指定して SVG テンプレートを取得します。
getAllImageTemplateNames() string[] 名前を指定して SVG テンプレートを取得します。

SVG 画像テンプレートでは、次のプレースホルダー値がサポートされています。

プレースホルダー 説明
{color} 第一の色。
{secondaryColor} 補色。
{scale} SVG 画像は、マップ画像スプライトに追加されると png 画像に変換されます。 このプレースホルダーを使用すると、変換する前にテンプレートを拡大縮小し、きれいにレンダリングされるようにすることができます。
{text} HTML マーカーと共に使用する場合にテキストを表示する位置。

atlas 名前空間へのカスタム アイコン テンプレートの追加サンプルは、SVG テンプレートを取得し、次のスクリーンショットに示すように、再利用可能なアイコン テンプレートとしてAzure Maps Web SDK に追加する方法を示しています。 このサンプルのソース コードについては、「カスタム アイコン テンプレートの atlas 名前空間への追加のサンプル コード」を参照してください。

 内部に青いアンカーの複数のイメージを含む、大きな緑色の三角形の形をした多角形レイヤーを表示したスクリーンショット。

画像テンプレートの一覧

次の表は、Azure Maps Web SDK 内で現在使用できるすべての画像テンプレートの一覧です。 各画像の上にテンプレート名が示されています。 既定では、第一の色は青であり、第二の色は白です。 白の背景で第二の色を見やすくするために、次の画像では第二の色が黒に設定されています。

シンボル アイコン テンプレート

marker

marker-thick

marker-circle

marker-flat

marker アイコン

marker-thick アイコン

marker-circle アイコン

marker-flat アイコン


marker-square

marker-square-cluster

marker-arrow

marker-ball-pin

marker-square アイコン

marker-square-cluster アイコン

marker-arrow アイコン

marker-ball-pin アイコン


marker-square-rounded

marker-square-rounded-cluster

フラグ

flag-triangle

marker-square-rounded アイコン

marker-square-rounded-cluster アイコン

flag アイコン

flag-triangle アイコン


triangle

triangle-thick

triangle-arrow-up

triangle-arrow-left

triangle アイコン

triangle-thick アイコン

triangle-arrow-up アイコン

triangle-arrow-left アイコン


hexagon

hexagon-thick

hexagon-rounded

hexagon-rounded-thick

hexagon アイコン

hexagon-thick アイコン

hexagon-rounded アイコン

hexagon-rounded-thick アイコン


pin

pin-round

rounded-square

rounded-square-thick

pin アイコン

pin-round アイコン

rounded-square アイコン

rounded-square-thick アイコン


arrow-up

arrow-up-thin

car

 

arrow-up アイコン

arrow-up-thin アイコン

car アイコン

 

多角形塗りつぶしパターン テンプレート

checker

checker-rotated

circles

circles-spaced

checker アイコン

checker-rotated アイコン

circles アイコン

circles-spaced アイコン


diagonal-lines-up

diagonal-lines-down

diagonal-stripes-up

diagonal-stripes-down

diagonal-lines-up アイコン

diagonal-lines-down アイコン

diagonal-stripes-up アイコン

diagonal-stripes-down アイコン


grid-lines

rotated-grid-lines

rotated-grid-stripes

x-fill

grid-lines アイコン

rotated-grid-lines アイコン

rotated-grid-stripes アイコン

x-fill アイコン


zig-zag

zig-zag-vertical

dots

 

zig-zag アイコン

zig-zag-vertical アイコン

dots アイコン

 


事前に読み込まれるイメージ アイコン

マップによって、markerpinpin-round テンプレートを使用し、マップ イメージ スプライトに一連のアイコンが事前読み込みされます。 これらのアイコンの名前とその色の値を次の表に示します。

アイコン名 color secondaryColor
marker-black #231f20 #ffffff
marker-blue #1a73aa #ffffff
marker-darkblue #003963 #ffffff
marker-red #ef4c4c #ffffff
marker-yellow #f2c851 #ffffff
pin-blue #2072b8 #ffffff
pin-darkblue #003963 #ffffff
pin-red #ef4c4c #ffffff
pin-round-blue #2072b8 #ffffff
pin-round-darkblue #003963 #ffffff
pin-round-red #ef4c4c #ffffff

すぐに試せるツール

次のツールを使用すると、さまざまな方法でさまざまな組み込みの画像テンプレートをレンダリングし、原色、補色、およびスケールをカスタマイズできます。


次のステップ

この記事で使われているクラスとメソッドの詳細については、次を参照してください。

画像テンプレートを使用できるコード サンプルの詳細については、次の記事を参照してください。