mcpField
M
maptiler

maptiler

github.com/maptiler開発4165 回インストール1 週間前に更新
リポジトリ

maptiler について

MapTilerを利用する開発者向けのエージェントスキルです。Web SDK、フレームワーク連携、モバイルSDK、Cloud REST API、オンプレミス製品を扱い、座標やスタイル、APIキーの規約を整理しています。

主な機能

  1. 01Web、モバイル、Cloud API、オンプレミス製品を網羅
  2. 02命名規則に沿ってプラットフォーム別の資料を整理
  3. 03MapTiler SDK JSの地図・レイヤー機能を紹介
  4. 04座標順序とプラットフォーム間の変換を説明
  5. 05スタイル更新とAPIキーの取り扱いを解説

活用シーン

  1. 01WebまたはモバイルアプリにMapTiler地図を実装
  2. 02プラットフォームに合うSDKや連携資料を検索
  3. 03座標変換、地図スタイル、キーの使い方を確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/maptiler/maptiler-skills --skill maptiler

インストール後、Claude Code で/maptilerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
cloud-admin-api-analytics.md
cloud-admin-api-api-keys.md
cloud-admin-api-index.md
cloud-admin-api-tilesets.md
cloud-api-authentication.md
cloud-api-coordinates.md
cloud-api-data.md
cloud-api-elevation.md
cloud-api-fonts.md
cloud-api-geocoding.md
cloud-api-geolocation.md
cloud-api-images.md
cloud-api-index.md
cloud-api-maps.md
cloud-api-ogc.md
cloud-api-static-maps.md
cloud-api-tiles.md
cloud-api-weather.md
complex-dds-expressions-guide.md
examples-android-3d-terrain.md
examples-android-add-data.md
examples-android-cluster.md
examples-android-controls.md
examples-android-custom-annotations.md
examples-android-fly-to.md
examples-android-get-started.md
examples-android-globe.md
examples-android-heatmap-helper.md
examples-android-point-helper-cluster.md
examples-android-point-helper.md

詳細

MapTiler — エージェントスキル

@maptiler/sdk · ドキュメント · Cloud Console · GitHub

MapTiler のすべての製品領域を対象とします。Web SDK、フレームワーク統合、ネイティブモバイル SDK、Cloud REST API、オンプレミスの Server / Engine、ベクタータイルスキーマが含まれます。リファレンスドキュメントは references/ 以下にあり、必要に応じて読み込まれます。厳選されたカタログとして references/INDEX.md を使用してください。


1. プラットフォームの範囲とファイル名のプレフィックス規則

プラットフォーム間の混在を避けるため、references/ 内を grep / グロブ検索するときは、次のプレフィックスフィルターを指定してください。

対象プラットフォームファイル名のプレフィックス
Web(コア JS SDK)sdk-js-*、examples-sdk-js-*
Web フレームワーク(React、Svelte、Vue、Angular)web-libraries-*、examples-react-*、examples-svelte-*、examples-vuejs-*、examples-angular-*
Web マッピングエンジン(Leaflet、OpenLayers、Cesium、deck.gl)examples-leaflet-*、examples-openlayers-*、examples-cesium-*、web-libraries-deck-gl*
Android(Kotlin/Java)mobile-sdks-android-*、examples-android-*
iOS(Swift)mobile-sdks-ios-*、examples-ios-*
クロスプラットフォームモバイル(Flutter、React Native)mobile-sdks-flutter-*、mobile-sdks-react-native-*
Cloud REST APIcloud-api-*、cloud-admin-api-*
オンプレミスインフラストラクチャon-prem-*
ベクタータイルスキーマmap-resources-schemas-*
MapLibre スタイル仕様map-resources-specifications-*

2. 共通ルール(すべてのプラットフォームに適用)

A. 変数の漏出をゼロにするポリシー

references/versions.md を参照し、出力する前にすべてのテンプレートプレースホルダー(例:{{site.versions.sdk}}、{{site.url}})を、具体的なバージョン文字列または絶対パスに置き換えてください。どのような応答でも、生の {{ または }} を絶対に出力しないでください。

B. スタイルの最新化(v2/v3 → v4)

古いマップスタイルは必ずアップグレードしてください。これは Web、モバイル、フォールバック XYZ レイヤー、サービスワーカーのキャッシュリスト、スタイル切り替えロジックに適用されます。

旧スタイル最新の置き換え先SDK 定数
basic-v2 / streets-v2-lightbase-v4MapStyle.BASE
basic-v2-darkbase-v4-darkMapStyle.BASE.DARK
streets-v2streets-v4MapStyle.STREETS
outdoor-v2outdoor-v4MapStyle.OUTDOOR
satellite / satellite-v2satellite-v4MapStyle.SATELLITE
hybridhybrid-v4MapStyle.HYBRID
dataviz-darkdataviz-v4-darkMapStyle.DATAVIZ.DARK
topo-v2topo-v4MapStyle.TOPO

非推奨の系統に属する URL や定数は絶対に出力しないでください:streets-v2、streets-v2-dark/light、basic-v2*、outdoor-v2*、satellite-v2、hybrid-v2、dataviz-dark、topo-v2。

このルールはスタイルやタイルパスを指定するすべての状況に適用されます。

  • モバイルのスタイルエンドポイント(iOS / Android / Flutter / RN の生の style.json URL):https://api.maptiler.com/maps/streets-v4-dark/style.json?key=YOUR_KEY
  • セルフホスト/オンプレミスのフォールバック XYZ レイヤーおよびサービスワーカーのプリキャッシュリスト:/tiles/streets-v4/{z}/{x}/{y}.pbf — /tiles/streets-v2/ は使用しないでください
  • スタイル切り替え UI の状態(ダーク/ライト切り替え、スワイプレイヤー、時間帯によるスタイル変更):最新の v4 ID の間でのみ切り替えてください
C. バージョンの固定

すべての SDK、CDN、依存関係のバージョンは references/versions.md に記載されています。package.json、<script> タグ、Gradle の implementation 文字列、pubspec.yaml の項目を出力する前に、必ず参照してください。

D. プラットフォーム間の座標規則

MapTiler/MapLibre ファミリーのすべての API では [lng, lat] の順序が使われます。連携するプラットフォームではこの順序が異なり、この不一致が最もよくあるバグの原因です。頭の中で変換するのではなく、境界で変換してください。

送信元規則該当する場面
MapTiler SDK JS / MapLibre / Mapbox[lng, lat] 配列すべてのウェブ SDK コード(center、marker、source coordinates、expressions)
GeoJSON spec[lng, lat](または [lng, lat, ele])すべての geometry.coordinates の値
MapTiler REST URLsパス内の {lng},{lat}/geocoding/{lng},{lat}.json、/elevation/dataset/{lng},{lat}.json、静的マップ /static/{lng},{lat},{zoom}/…
Leaflet(lat, lng) — 逆順L.map().setView([lat, lng], z)、L.marker([lat, lng])、L.latLng(lat, lng)
iOS CLLocationCoordinate2D(latitude:, longitude:) — 構造体レベルで逆順Apple CoreLocation。MapTiler URL を作成する場合は c.longitude, c.latitude
Android LatLng / LngLatMapTiler Android SDK では LngLat(lng, lat) を使用します。システムの Location では latitude/longitude が個別のプロパティとして公開されますシステムの型ではなく、SDK の型に合わせてください
MapTiler Geolocation API responselatitude/longitude の個別フィールド(ペアではありません)SDK 呼び出しに渡す前に [loc.longitude, loc.latitude] を構築します

ルール:Leaflet、iOS CoreLocation、または「個別フィールド」のレスポンスに渡すときは、明示的に順序を入れ替えてください。後続のライブラリも上流の API と同じ規則に従うと決めつけないでください。

E. API キーの取り扱い
  • ユーザーがメッセージに実際のものと思われる API キーを貼り付けた場合(「key」、「token」、「apikey」などの語の近くにある UUID 形式またはトークン形式の文字列)は、次のように注意を促してください:「平文で有効なキーと思われるものを共有しています。テストが終わったら、https://cloud.maptiler.com/account/keys/ でキーをローテーションしてください。」出力ではプレースホルダー(YOUR_MAPTILER_API_KEY)を使用してください。
  • サービストークンをバックエンドの外に出してはいけません。 service.maptiler.com/v1/… を呼び出すサンプルコードを生成する場合は、トークンを process.env/同等の仕組みから読み込んでください。公開クライアントのコードスニペットに、トークンのように見えるプレースホルダーを埋め込まないでください。
  • 本番環境の例では、キーをオリジンで制限してください。制限のないキーではなく、API キーの設定で origins: ["*.example.com"] を推奨してください。

3. ウェブ — MapTiler SDK JS

MapLibre をそのまま使わず MapTiler SDK を使う理由

必ず @maptiler/sdk からインポートし、maplibre-gl から直接インポートしないでください。 SDK は MapLibre のすべてを再エクスポートし、さらに次の機能を追加します。

  • config.apiKey — API キーを一元管理し、セッションベースの課金を有効にします
  • MapStyle enum — 常に最新のスタイル ID を使用できます。スタイル URL をハードコードしないでください
  • helpers.* — ポリライン、ポリゴン、ポイント、ヒートマップを1行で作成できます(クラスタリング、カラースケール、GPX/KML に対応)
  • 組み込みの geocoding、geolocation、elevation、staticMaps、coordinates、data、math モジュール
  • terrain: true — コンストラクターのフラグ1つで3D地形を表示します
  • projection: 'globe' — halo と space の大気効果を備えた地球儀表示
  • コンストラクターレベルのコントロール(navigationControl: true、geolocateControl: true、…)
  • MapLibre を拡張した完全な TypeScript 型

MapLibre プラグインとの互換性は維持されています。SDK の Map は MapLibre の Map を継承しています。

インストール
npm install @maptiler/sdk

CSS は別途インポートする必要があります。

import '@maptiler/sdk/dist/maptiler-sdk.css';
API キー

偽のキーをハードコードしないでください。 ユーザーに尋ねるか、https://cloud.maptiler.com/account/keys/ を案内してください。フレームワークの環境変数の規則は次のとおりです。

ツール環境変数
ViteVITE_MAPTILER_API_KEY
Next.jsNEXT_PUBLIC_MAPTILER_API_KEY
CRAREACT_APP_MAPTILER_API_KEY
import * as maptilersdk from '@maptiler/sdk';
maptilersdk.config.apiKey = import.meta.env.VITE_MAPTILER_API_KEY;
最小限のマップ
const map = new maptilersdk.Map({
  container: 'map',                       // element or ID
  style: maptilersdk.MapStyle.STREETS,    // enum — always latest
  center: [14.4178, 50.1167],             // [lng, lat] — NOT [lat, lng]!
  zoom: 12,
});

重要:コンテナーには明示的なサイズ(例:height: 100vh)が必要です。指定しないとマップは表示されません。

コンストラクターオプション(最もよく使われるもの)
new maptilersdk.Map({
  container, style, center, zoom,
  pitch: 0, bearing: 0,            // 0–85 / rotation
  projection: 'mercator',          // or 'globe'
  terrain: false, terrainExaggeration: 1,
  hash: true,                      // sync viewport to URL
  language: maptilersdk.Language.AUTO,
  cooperativeGestures: true,
  geolocate: maptilersdk.GeolocationType.POINT,
  navigationControl: true, geolocateControl: true,
  scaleControl: true, terrainControl: false,
  fullscreenControl: false, projectionControl: false,
  minimap: { containerStyle: { width: '200px', height: '150px' } },  // or `true` for defaults
});

navigationControl、geolocateControl、scaleControl、terrainControl、fullscreenControl、projectionControl、minimap、geolocate には、初期化後の addControl よりもコンストラクターフラグを使用してください。各オプションには、true、コーナーを示す文字列('top-right')、または設定オブジェクトを指定できます。addControl(new MaplibreThing(), 'top-right') は、サードパーティープラグインが必要な場合、または初期化後に変更する場合にのみ使用してください。

マップスタイル(全15種類のリファレンススタイル)
スタイル用途バリアント
MapStyle.STREETS詳細な道路地図.DARK、.PASTEL
MapStyle.SATELLITE美しい衛星地図.DARK
MapStyle.HYBRID地図情報を重ねた美しい衛星地図.DARK
MapStyle.OUTDOORハイキングやスポーツ向けの地図.DARK
MapStyle.WINTER冬のアクティビティ向けの地図.DARK
MapStyle.TOPO汎用地形図.DARK、.PASTEL、.TOPOGRAPHIQUE
MapStyle.DATAVIZシンプルなデータ可視化用地図.DARK、.LIGHT
MapStyle.BASE見やすい汎用地図.DARK、.LIGHT
MapStyle.BRIGHTコンテキスト表示やナビゲーション向けの明るい地図.DARK、.LIGHT、.PASTEL
MapStyle.BACKDROPモノクロのコンテキスト用地図.DARK、.LIGHT
MapStyle.AQUARELLE芸術的な水彩地図.DARK、.VIVID
MapStyle.LANDSCAPE明るい陰影起伏図.DARK、.VIVID
MapStyle.OCEAN海底地形図.DARK
MapStyle.OPENSTREETMAP豊富な情報を備えた、見慣れたOSMコミュニティスタイル.DARK
MapStyle.TONERコントラストの強いモノクロ地図.LITE

プロキシベースの定数(MapStyle.STREETS)を使用し、URLをハードコードしないでください。存在しないバリアントを指定した場合、プロキシは.DEFAULTにフォールバックするため、スペルミスがあってもベーススタイルがエラーなく表示されます。コンパイル時のエラーは発生しません。

権威あるリファレンス(説明、メソッド、バリアントの解決ルール):references/sdk-js-map-styles.md。

言語
maptilersdk.config.primaryLanguage = maptilersdk.Language.ENGLISH;
map.setLanguage(maptilersdk.Language.FRENCH);     // runtime switch

特別な値:Language.AUTO(ブラウザー)、Language.LOCAL、Language.VISITOR。


4. Web — よく使うレシピ

// Marker + popup
new maptilersdk.Marker({ color: '#FF0000' })
  .setLngLat([14.4178, 50.1167])
  .setPopup(new maptilersdk.Popup().setHTML('<h3>Prague</h3>'))
  .addTo(map);

// Geocoding (forward / reverse) — features[].geometry.coordinates is [lng, lat]
await maptilersdk.geocoding.forward('Prague', { limit: 5, proximity: [14.4178, 50.1167] });
await maptilersdk.geocoding.reverse([14.4178, 50.1167]);

// Camera animation
map.flyTo({ center: [14.4178, 50.1167], zoom: 15, pitch: 60, duration: 3000 });

// Static map URL
maptilersdk.staticMaps.centered([14.4178, 50.1167], 12,
  { hiDPI: true, width: 800, height: 600, style: maptilersdk.MapStyle.OUTDOOR });
ベクターレイヤーヘルパー(helpers.add*)

最も一般的なレイヤータイプを1行で作成できます。すべて同じ形式を受け取ります:{ data, beforeId, … }。data には、GeoJSON、URL(GeoJSON / GPX / KML)、またはMapTilerデータセットUUIDを指定できます。

ヘルパー主なオプション
addPolylinelineColor、lineWidth、outline
addPolygonfillColor、fillOpacity、outlineColor
addPointpointColor、pointRadius、cluster、showLabel
addHeatmapcolorRamp(ColorRamp.*)、property、radius、opacity
maptilersdk.helpers.addPoint(map, {
  data: pointsGeoJSON, pointColor: '#FF0000', pointRadius: 8,
  cluster: true, showLabel: true, beforeId: 'waterway-label',
});
3D地形/グローブ — 単一フラグのコンストラクター
// 3D terrain
new maptilersdk.Map({ container: 'map', style: maptilersdk.MapStyle.OUTDOOR,
  terrain: true, terrainExaggeration: 1.5, terrainControl: true, pitch: 60 });

// Globe projection
new maptilersdk.Map({ container: 'map', style: maptilersdk.MapStyle.SATELLITE,
  projection: 'globe', halo: true, space: true, center: [0, 20], zoom: 1.5 });

ヘルパーとオプション型の全リファレンス:references/sdk-js-map.md。トピックごとの実行可能なサンプル:examples-sdk-js-*.md を検索してください(マーカー、ジオコーディング、クラスタリング、ヒートマップ、地形、グローブ、天気など)。


5. Webフレームワーク

React / Next.js
import { useEffect, useRef } from 'react';
import * as maptilersdk from '@maptiler/sdk';
import '@maptiler/sdk/dist/maptiler-sdk.css';

maptilersdk.config.apiKey = import.meta.env.VITE_MAPTILER_API_KEY;

export default function MapComponent() {
  const containerRef = useRef(null);
  const mapRef = useRef(null);

  useEffect(() => {
    if (mapRef.current) return;                              // Strict-Mode guard
    mapRef.current = new maptilersdk.Map({
      container: containerRef.current,
      style: maptilersdk.MapStyle.STREETS,
      center: [14.4178, 50.1167], zoom: 12,
    });
    return () => { mapRef.current?.remove(); mapRef.current = null; };
  }, []);

  return <div ref={containerRef} style={{ width: '100%', height: '400px' }} />;
}

Next.js App Router:"use client"; を追加し、NEXT_PUBLIC_MAPTILER_API_KEY を使用してください。SSRページでは、dynamic(() => import('./Map'), { ssr: false }) を使用します。

Vue / Svelte / Angular

Reactと同じパターンです。マウントフック(onMounted / onMount / ngOnInit)内でマップを初期化し、アンマウントフック(onUnmounted / onDestroy / ngOnDestroy)内で map.remove() を呼び出します。また、リアクティブな状態を条件にマップの作成を制御しないでください。各フレームワークの完全なコード例:web-libraries-vue.md · web-libraries-svelte.md · web-libraries-angular.md。

フレームワークのライフサイクルルール(重要)
  1. WebGL のクリーンアップ:React の useEffect、Vue の onMounted/onUnmounted、Angular の ngOnInit/ngOnDestroy、Svelte の onMount/onDestroy におけるすべてのマップインスタンスは、破棄時に 必ず map.remove() を呼び出し、参照を null にしてください。
  2. マップの作成は厳密に 1 回だけ実行します:初期化フックの依存配列にリアクティブな状態を入れないでください。状態が変わるたびにキャンバスが破棄されて再作成され、中心、ズーム、動的オブジェクトが失われます。
  3. 動的な更新には分離したフックを使います:SDK の更新メソッド(map.setStyle、map.flyTo、map.setLayoutProperty)を呼び出し、再初期化はしないでください。
  4. イベントハンドラー内の古いクロージャ:click/draw.create リスナーで最新の React 状態が必要な場合は、useRef(const stateRef = useRef(state); stateRef.current = state;)に保存し、stateRef.current を通じて読み取ってください。依存配列にその状態を追加しないでください。

ライフサイクルの詳細:web-libraries-react.md。


6. CDN/単一ファイル/プレイグラウンド

versions.md に記載された固定バージョンを使用してください。latest や古いビルドは使用しないでください。

<script src="https://cdn.maptiler.com/maptiler-sdk-js/v4.0.2/maptiler-sdk.umd.min.js"></script>
<link href="https://cdn.maptiler.com/maptiler-sdk-js/v4.0.2/maptiler-sdk.css" rel="stylesheet" />

その他、よく使われる固定バージョン:

  • Leaflet プラグイン:https://cdn.maptiler.com/maptiler-leaflet-maptilersdk/v4.1.0/maptiler-leaflet-maptilersdk.js
  • ol-mapbox-style:https://cdn.jsdelivr.net/npm/[email protected]/dist/olms.js
  • CesiumJS:1.141.0(スクリプト+/Widgets/widgets.css)

ブラウザー ESM:<script type="module"> またはインポートマップを使用する場合は、UMD ビルドではなく .mjs ビルド(maptiler-sdk.mjs)を 必ず 使用してください。UMD から名前付き ES インポートを行うと、コンソールエラーが発生します。


7. ベクターレイヤー、スキーマ、データ駆動型スタイリング

スキーマの検証(必須)

スタイルルール、フィルター、ペイント/レイアウト式を書く前に、タイルセットのソースを特定し、そのスキーマリファレンスを確認してください。source-layer ID、フィーチャープロパティのキー(class、subclass、ele、height など)、ペイントフィールドを決して推測しないでください。

OMT → Planet v4 の移行時の注意点。 旧 OpenMapTiles スキーマでは、道路、鉄道、航空、フェリーのフィーチャーがすべて 1 つの transportation レイヤーにまとめられています。Planet v4 ではこれらが road、railway、aviation、aviation_line、ferry、aerialway という個別のトップレベルレイヤーに分割されています。Mapbox/MapLibre のスタイルを移植する場合や、2024 年以前のチュートリアルに従う場合、レイヤー名 transportation は解決されません。よくある名称変更は次のとおりです。

OMT(旧)Planet v4(現行)
transportation(class: motorway/primary/.../residential)road(class: motorway/trunk/primary/secondary/tertiary/minor/service/...)。residential クラスはありません。minor または service を使用してください
transportation_nameroad_label
(なし — まとめて収録)個別のレイヤーとして railway、aviation、ferry、aerialway
placecountry_label、city_label、island_label、continent_label(階層が分割)

ユーザープロンプトで transportation、place などの OMT 時代のレイヤー名が指定されている場合、壊れたフィルターを黙って生成するのではなく、名称変更を明示してください。

スキーマリファレンス
Planet v4(最新版)map-resources-schemas-planet-v4.md
OpenMapTiles Planetmap-resources-schemas-omt-planet.md
Planet Litemap-resources-schemas-planet-lite.md
建物map-resources-schemas-buildings.md
等高線/アウトドア/海洋等高線、アウトドア、海洋
土地被覆/地形/地籍土地被覆、地形、地籍
スタイル仕様(レイヤー/ソース/式/ルート)レイヤー、ソース、式、ルート
Buildings タイルセット — 常に優先(優先順位ルール)

専用の buildings タイルセットは、base-v4/streets-v4 に組み込まれた建物データよりも大幅に充実しています。3D 押し出し、ファサードの着色、建物ラベル、入口、またはフィーチャーごとのインタラクションには、必ずこれを使用してください。

項目標準(maptiler_planet_v4)専用(buildings)
高さフィールドrender_height、render_min_heightheight、height_min
色—facade_color、roof_color
形状—roof_shape
ラベル—building_label(名称、ISO 639 翻訳)
入口—building_entrance
一意の IDFalseTrue(z14+)— setFeatureState で使用可能
// MapTiler SDK JS auto-injects the API key from config.apiKey — do NOT append ?key= manually.
map.addSource('buildings', {
  type: 'vector',
  url: 'https://api.maptiler.com/tiles/buildings/tiles.json',
});

// Facade color with fallback
'fill-extrusion-color': ['coalesce', ['get', 'facade_color'], 'hsl(44, 14%, 79%)']

SDK の外部(生の MapLibre GL JS、モバイルネイティブの style.json の取得、サーバー側リクエスト)では、URL に ?key=YOUR_MAPTILER_API_KEY を追加してください。自動挿入は行われません。

重要なフィールドの対応関係:標準では render_height/render_min_height、専用タイルセットでは height/height_min を使用します。これらを混在させると、描画に失敗してもエラーが表示されません。

SDK のガードレール — ColorRamp の誤生成

JS SDK の ColorRamp クラスには .getExpression() も .getCSSGradientDirection() もありません。スタイルを構築するには、ColorRamp.getRawColorStops() を反復処理し、標準的な MapLibre の補間式を手動で組み立ててください。

DDS の詳細

complex-dds-expressions-guide.md — データ駆動型スタイリングに使える、組み合わせ可能なパターンです。


8. クラウド REST API

すべての SDK API モジュールは config.apiKey を自動的に使用します。JavaScript 以外のコンテキストについては、REST ドキュメントを参照してください。

モジュール用途主なメソッド/リファレンス
geocoding場所の検索、逆ジオコーディングforward()、reverse()、batch() — cloud-api-geocoding.md
geolocationIP アドレスによる訪問者の位置情報info() — cloud-api-geolocation.md
elevation標高の検索at()、batch()、fromLineString() — cloud-api-elevation.md
staticMaps静的地図画像centered()、bounded()、automatic() — cloud-api-static-maps.md
coordinatesCRS/EPSG の変換search()、transform() — cloud-api-coordinates.md
dataMapTiler データセットget(uuid) — cloud-api-data.md
weather風、気温、気圧、レーダーcloud-api-weather.md
maps(ベクター/ラスター)タイルセット、スタイルcloud-api-maps.md
tiles生のタイルエンドポイントcloud-api-tiles.md
fonts/images/ogcその他fonts、images、ogc
管理(タイルセット、アップロード、キー、分析)アカウント管理cloud-admin-api-tilesets.md、api-keys、analytics
認証キーとトークンの違い、リファラーのルールcloud-api-authentication.md
// IP geolocation
const loc = await maptilersdk.geolocation.info();

// Elevation — returns [lng, lat, elevationMeters]
const point = await maptilersdk.elevation.at([14.4178, 50.1167]);

9. ネイティブモバイル SDK

プラットフォーム概要API リファレンス
iOS(Swift)mobile-sdks-ios.mdmobile-sdks-ios-api-classes.md
Android(Kotlin)mobile-sdks-android.mdmobile-sdks-android-api-com-maptiler-maptilersdk-map.md
Fluttermobile-sdks-flutter.mdmobile-sdks-flutter-*.md を検索
React Nativemobile-sdks-react-native.mdmobile-sdks-react-native-*.md を検索
iOS — 最小限の地図(SwiftUI)
import SwiftUI
import MapTilerSDK

struct ContentView: View {
    @State private var map = MTMapView(options: MTMapOptions(zoom: 2.0))

    var body: some View {
        MTMapViewContainer(map: map) {}
            .referenceStyle(.streets)
            .styleVariant(.defaultVariant)
            .task { await MTConfig.shared.setAPIKey("YOUR_MAPTILER_API_KEY") }
    }
}

MTConfig.shared.setAPIKey(_:) は async であり、地図を初期化する前に必ず呼び出す必要があります。Swift 6 では、Task または .task モディファイアから呼び出してください。UIKit の代替方法:viewDidLoad 内で MTMapView(frame:options:referenceStyle:) を宣言し、pinToSuperviewEdges() を呼び出します。

Android — 最小限の地図(Jetpack Compose)
// build.gradle.kts (app):  implementation("com.maptiler:maptiler-sdk-kotlin:<version>")
// AndroidManifest.xml:    <uses-permission android:name="android.permission.INTERNET" />
//                         android:hardwareAccelerated="true"

import com.maptiler.maptilersdk.config.MTConfig
import com.maptiler.maptilersdk.map.*

@Composable
fun MapScreen(context: Context) {
    MTConfig.apiKey = "YOUR_MAPTILER_API_KEY"        // set before first map
    val controller = remember { MTMapViewController(context) }
    MTMapView(
        referenceStyle = MTMapReferenceStyle.STREETS,
        options = MTMapOptions(),
        controller = controller,
        modifier = Modifier.fillMaxSize(),
    )
}

XML/View 版:レイアウトで MTMapViewClassic を使用し、onCreate で mapView.initialize(referenceStyle, options, controller, styleVariant = null) を呼び出します。

実行可能なサンプル:examples-ios-*.md、examples-android-*.md を検索してください。raw style.json の URL 規則(UIKit、XML/View、カスタムアセットパス)については、§ 2B を参照してください。


10. オンプレミス — サーバーとエンジン

セルフホスト環境へのデプロイやオフラインでのタイル生成については、以下をご覧ください。

トピックリファレンス
MapTiler Server — はじめにon-prem-server-getting-started.md
データのホスティングon-prem-server-hosting-data.md
仮想タイルセットon-prem-server-virtual-tilesets.md
サーバーでの地図スタイリングon-prem-server-map-styling.md
オンプレミスでのジオコーディングon-prem-server-geocoding.md
Engine CLI — はじめにon-prem-engine-getting-started-cli.md
Engine — 入力/出力オプション入力、出力

フォールバック XYZ レイヤーとサービスワーカーキャッシュにおけるタイルパスの規則については、§ 2B をご覧ください。


11. 重要な注意点(クロスプラットフォーム)

問題解決方法
地図が表示されない(Web)コンテナーに明示的な高さが必要です(100vh または position: absolute; inset: 0)
マーカー/地図の中心が別の大陸に表示される座標は[lng, lat]であり、[lat, lng]ではありません(例:プラハは[14.4178, 50.1167]であり、[50.1167, 14.4178]ではありません)
setStyle()の後にレイヤーが消えるmap.once('styledata', …)内で再追加します
データがラベルに重なるbeforeId: 'waterway-label'を使用します
多数のポイントで動作が遅いcluster: true(ヘルパーまたはソース)を有効にします
SPAでメモリーリークが発生するアンマウント時に必ずmap.remove()を呼び出し、refをnullにします
maplibre-glを個別にインポートしている@maptiler/sdkを使用します。MapLibreが含まれており、拡張されています
状態が変わるたびに地図が再作成される(React)useEffectの依存配列を空にし、再初期化するのではなくsetXメソッドで変更します
ハンドラーで古いクロージャーが使われる状態のミラーとしてuseRefを使用し、.currentを読み取ります
ブラウザーでESMスクリプトエラーが発生するUMDではなく.mjsビルドを<script type="module">で使用します
モバイルで3D建物の表示が平面的になる標準スタイルが読み込まれています。専用のbuildingsソースを追加します
モバイルでスタイルが404になるエンドポイントをstreets-v2系からstreets-v4系に更新します
ジオコーディングキーで403が発生するキー設定でリファラー/許可リストを確認します(cloud-api-authentication.md)
{{ }}が出力に漏れる出力する前にversions.mdを参照して解決します
MapTiler Engineが起動しない-o output_dir(または-o file.mbtiles)の出力先は既に存在していてはいけません。削除するか、新しいパスを指定します。-f/--forceフラグはありません
iOSアプリですべてのタイルが403になるMTConfig.shared.setAPIKey(_:)はasyncですが、awaitなしで呼び出されています。最初の地図ビューが表示される前に、Task { … }内またはSwiftUIの.task修飾子内で設定します
mapbox-gl-drawのカーソル/ヒットテストが動作しないプラグインのCSSは.mapboxgl-canvasを対象としていますが、MapTiler/MapLibreでは.maplibregl-canvasが使われます。フォールバックルールとして.maplibregl-canvas.mouse-add { cursor: crosshair }および.maplibregl-canvas.mouse-drag { cursor: grabbing }を追加します
ユーザーがチャットに有効なAPIキーを貼り付けるそのキーを問題として報告し(Cloud Consoleでローテーションします)、自身の出力ではYOUR_MAPTILER_API_KEYプレースホルダーを使用します。実際のキーをそのまま返してはいけません
addControl(new XControl())パターンをでっち上げる多くのMapTilerコントロールはコンストラクターのフラグとして利用できます:minimap、navigationControl、geolocateControl、scaleControl、terrainControl、fullscreenControl、projectionControl。まずフラグを使い、addControlはサードパーティープラグインまたは初期化後の変更にのみ使用します
SDKクラス名を幻覚する(MinimapControl、GeocodingBarなど)クラス名を出力する前に、references/sdk-js-controls.mdとsdk-js-map.mdを照合します。正式なミニマップクラスはMaptilerMinimapControl(Maptiler接頭辞)であり、いずれにしてもコンストラクターオプションを使う方法が推奨されます
GeoSplatsのレンダリングに失敗する/モデルが空白になるGeoSplats SDKにはWebGPUのサポートが必須です。ブラウザーの互換性(navigator.gpu)を必ず確認し、明確なUIフォールバックエラーオーバーレイを表示します

12. エコシステムパッケージ

パッケージ目的
@maptiler/geosplats高性能な3D Gaussian Splatting(WebGPUを活用)
@maptiler/geocoding-control住所検索バーのUI
@maptiler/weather風、気温、気圧、レーダーの各レイヤー(60 fps)
@maptiler/3dglTF/GLB 3Dモデルの配置
@maptiler/elevation-profileルートの標高グラフ
@maptiler/marker-layout重なりを防ぐDOMマーカーオーバーレイ
@maptiler/ar拡張現実による3D地形
@maptiler/clientヘッドレスAPIクライアント(Node.js/ブラウザー、地図なし)

13. リソース


14. リファレンスカタログ

重要度の高いリファレンスドキュメントを厳選したインデックスは、references/INDEX.md にあります。そこに記載されていないファイルは、§ 1 のプレフィックス規則で検索してください。

コメント