ガイド変更履歴HERE SDK API references
ガイド

このガイドのほとんどのコードスニペットは、小規模で焦点を絞ったサンプルアプリの一部としても見つけることができます。これには、次の2つの方法でアクセスできます。

  • HEREプラットフォームでダウンロードしたパッケージにバンドルされている、お使いの製品用の最新のサンプルアプリを見つけてください。

  • GitHubで、Exploreの最新のサンプルアプリを見つけてください。

  • GitHubで、Navigateの最新のサンプルアプリを見つけてください。

ほとんどのサンプル アプリは、「XYExample.swift」ファイルに関連するコードが含まれている一貫した方法で記述されます。UI要素は、コードの重要な部分を隠すことがないように、ほとんどが省略されているか最小限に抑えられています。HERE SDK自体は、ほとんどのAPIをUIがないヘッドレスで提供していることに注意してください。

慣例として、このガイドと付属のサンプル アプリでは、関数呼び出し式を使用し、すべてのタイプの情報や、メソッドやコールバック名などのその他の詳細を表示するようにしています。両方の例は、「検索」セクションにあります。同様に、HERE SDK ではコールバック関数として完了ハンドラーを使用します。HERE SDK で使用できるすべての完了ハンドラーでは、クロージャー式または関数呼び出し式のいずれかを使用できます。

Swiftの慣例と同様に、HERE SDKが設計上の安全性を保証している場合を除き、オプショナルの強制的なアンラップは回避されます。

共通のプラットフォームの分離原則に従い、サンプルコードはほとんどのiOSの依存関係から解放されており、その多くはHERE SDKの使用方法を示す純粋なSwiftコードです。

使用可能なサンプルアプリ

マップビューを表示する

HelloMap」アプリは、マップビューを表示して開始方法を示します。

ストーリーボードを使用してマップビューを表示する

HelloMapWithStoryboard」アプリは、ストーリーボードを使用してマップビューを表示し、開始する方法を示します。

HERE SDKを使用してCarPlayアプリを作成する

HelloMapCarPlay」アプリは、CarPlayを統合して、車載ヘッドユニットディスプレイに地図を表示する方法を示します。

マップカメラを使用する

Camera」アプリは、ターゲットとターゲットアンカーポイントを変更する方法と、カスタムマップアニメーションを使用して別の場所に移動する方法を示します。

カスタムカメラアニメーションを作成する

CameraKeyframeTracks」アプリは、キーフレームトラックを使用してカスタムカメラアニメーションを実行する方法を示します。

さまざまなマップスキームとマップレイヤーを表示する

MapFeatures」アプリは、マップレイヤーやマップスキームなど、さまざまなマップビュー機能を有効にする方法を示します。Navigateでのみ使用可能。

マップビューでリアルタイム交通情報を視覚化する

Traffic」アプリは、リアルタイム交通情報を検索する方法と、地図上でそれを視覚化する方法を示します。

ジェスチャーを使用してマップビューを操作する

Gestures」アプリは、タップ、ダブルタップ、ピンチによる回転などのジェスチャーを処理する方法を示します。

マップアイテムを追加する

MapItems」アプリは、円、ポリゴン、ポリライン、ネイティブビュー、2Dおよび3Dマップマーカーを追加して、マップ上にPOI (施設情報) などを配置する方法を示します。

埋め込みPOI (施設情報) を選択する

CartoPOIPicking」アプリは、拡張された場所の詳細を含む埋め込みマップマーカーを選択する方法を示します。埋め込みマップマーカーは、すでにデフォルトですべての地図に表示されています。

独自のマップスキームのスタイルを設定する

CustomMapStyles」アプリは、HERE Style Editorで作成されたカスタムマップスキームを読み込む方法を示します。

カスタムラスターレイヤーを追加する

CustomRasterLayers」アプリは、カスタムラスターレイヤーを読み込む方法を示します。

カスタムタイルソースを追加する

CustomTileSource」アプリは、カスタムポイントレイヤーの読み込み、カスタムポイントタイルソースを使用したクラスタリング機能の実装、カスタムラスターレイヤーの統合を行う方法を示します。

マップ画像をオフスクリーンで生成する

OffscreenMap」アプリは、HERE SDKを使用して、画面上にマップビューを配置することなく、地図の画像を生成する方法を示します。

マップビューを使用せずにHERE SDKを使用する

StandAloneEngine」アプリは、マップビューを使用せずにエンジンを使用する方法を示します。

オンラインで場所を検索し、ジオコーディングとリバースジオコーディングを使用する

Search」アプリは、POI (施設情報) を検索して地図に追加する方法を示します。また、ジオコーディングとリバースジオコーディングを示します。

オンラインおよびオフラインで場所を検索し、ジオコーディングとリバースジオコーディングを使用する

SearchHybrid」アプリは、場所 (自動候補提示を含む)、特定の地理座標に属する住所 (リバースジオコーディング)、住所に属する地理座標 (ジオコーディング) を検索する方法を示します。また、インターネット接続が利用できない場合にオフラインで検索する方法について示します。Navigateでのみ使用可能。

オンラインでルートを計算して視覚化する

Routing」アプリは、ルートを計算して地図に追加する方法を示します。

オンラインおよびオフラインでルートを計算して視覚化する

RoutingHybrid」アプリは、オンラインおよびオフラインでルートを計算する方法を示します。Navigateでのみ使用可能。

EVルートを計算する

EVRouting」アプリは、電気自動車のルートを計算する方法、Isoline Routingを使用して到達範囲を計算する方法、ルート上での検索方法を示します。

回避オプションを使用してルートを最適化する

RoutingWithAvoidanceOptions」アプリは、AvoidanceOptionsを使用してルートを計算する方法と、SegmentDataLoaderを使用して地図からデータを取得する方法を示します。また、地図からセグメントを選択して、特定のエリアや道路を回避することもできます。Navigateでのみ使用可能。

公共交通機関のルートを計算する

PublicTransit」アプリは、バス、電車、地下鉄のルートを計算する方法を示します。

HERE Positioningを統合する

Positioning」アプリは、HERE Positioningを統合して現在地を確認する方法を示します。Navigateでのみ使用可能。

屋外での移動を追跡および記録する

HikingDiary」アプリは、HERE Positioningを使用してGPXトレースを記録する方法を示します。Navigateでのみ使用可能。

ナビゲーションの使用を開始する

NavigationQuickStart」アプリは、ターン・バイ・ターンナビを開始する方法を示します。Navigateでのみ使用可能。

トラッキング機能を備えたターン・バイ・ターンナビを使用する

Navigation」アプリは、トラッキング機能と音声アシスタンスとともに、ターン・バイ・ターンナビを実装する方法の概要を示します。Navigateでのみ使用可能。

ターン・バイ・ターンナビをカスタマイズする

NavigationCustom」アプリは、ガイダンスビューをカスタマイズする方法を示します。Navigateでのみ使用可能。

ターン・バイ・ターンナビ中にナビゲーションイベントを表示する

NavigationWarners」アプリは、ターン・バイ・ターンナビ中に制限速度やレーンアシスタンスなどのさまざまなナビゲーションイベントを実装する方法を示します。Navigateでのみ使用可能。

空間音声ナビゲーションを使用する

SpatialAudioNavigation」アプリは、ルート案内中にTTS音声の空間音声通知を活用する方法を示します。Navigateでのみ使用可能。

ナビゲーション中にルート再検索を処理する

Rerouting」アプリは、ドライバーがルートを離れた後のルート案内中にHERE SDKを使用してルートを再検索する方法を示します。Navigateでのみ使用可能。

トラック用ナビゲーションを使用する

TruckGuidance」アプリは、HERE SDKを使用してトラック固有のルートを計算する方法やその他数多くのトラック関連機能を示します。Navigateでのみ使用可能。

マップビューを使用せずにヘッドレスでナビゲーションを開始する

NavigationHeadless」アプリは、最も簡単な方法で、ルートを追随せず、かつマップビューを表示せずにナビゲーションできるようHERE SDKを設定する方法を示します。Navigateでのみ使用可能。

オフラインマップを使用する

OfflineMaps」アプリは、HERE SDKが完全にオフラインで機能する仕組みと、大陸や国のオフラインマップデータをダウンロードする方法を示します。Navigateでのみ使用可能。

屋内地図を統合する

IndoorMap」アプリは、民間施設を統合する方法を示します。Navigateでのみ使用可能。

HERE SDKの単体テストを記述する

UnitTesting」アプリは、信頼性の高い単体テストを行うためにSDKクラスをモック化するのに役立ちます。

特に明記されていない限り、同じアプリをExploreまたはNavigateの資格情報を使用して実行できます。

サンプルアプリを作成する方法

任意のサンプルを選択してから次の手順を実行します。

  1. HERE SDK フレームワークを追加します。アプリのルート フォルダーにフォルダー heresdk.xcframework をコピーします。このフォルダーには、Info.plistファイルや2つのフォルダー(ios-arm64ios-arm64_x86_64-simulator) など、多くのファイルが含まれていることに注意してください。
  2. HEREの資格情報 (AccessKeyIdおよびAccessKeySecret) をプロジェクトの[APP_NAME]App.swiftファイルに追加します。Appクラスは、iOSアプリケーションの主要エントリーポイントとして機能します。

これでXcodeプロジェクトを開く準備ができました。デバイスまたはシミュレーターでアプリをすぐに実行できます。

HERE SDKをアプリに統合する方法については、「HERE SDKを統合する」を参照してください。

デモアプリのリスト

  • HERE SDKが提供する機能のデモや、すべての機能の動作を確認する場合は、HERE WeGoアプリケーションを確認してください。このアプリは、HERE SDKを強化するテクノロジースタックと同じものを使用しています。
  • または、GitHubのオープンソースプロジェクトとして見つけることができる参照アプリケーション (Flutterでのみ利用可能) をビルドして実行することもできます。このアプリは、わかりやすいUXフローと再利用可能なUIアセットを備え、Navigateのほとんどの機能 (Exploreの機能を含む) を、すぐにリリースできるアプリの形で示します。

リファレンスアプリケーションについて

HERE SDK for Flutter (Navigate) の参照アプリケーションでは、iOSデバイスおよびAndroidデバイスを対象とした、すぐにリリースできる複雑なプロジェクトがどのようなものかを示します。これを、HERE SDKをベースとする独自のプロジェクトのインスピレーション源として、部分的にまたは全体を使用できます。アプリの多くの部分がExploreと重複していますが、ルート案内にはHERE SDK (Navigate) が必要です。

参照アプリケーションをベース プロジェクトとして使用して、独自のアプリケーション開発を開始できます。

さらに、参照アプリケーションには、GitHub ページに表示されている利用規約に基づいて独自のアプリケーションで使用できる既製のアセットが多数あります。

以下は、経路誘導ガイダンス中などに運転操作アクションを示すために表示できる、選択可能な運転操作アイコンです。

参照アプリケーションには、マップマーカーなどの他のさまざまなアイコンも含まれており、独自のアプリケーションの開発をすばやく開始できます。

以下に、一部の機能の概要と、独自のプロジェクトで使用できる関連コードを示します。

その他の再利用可能なアイコンは、公式のHEREアイコンライブラリに用意されています。

参照アプリケーションを構築する方法

構築の手順は、参照アプリケーションをホストするGitHubページに記載されています。

HERE SDK for Flutterのメジャーバージョンのみがサポートされていることに注意してください。


EN 日本語

HERE documentation

Find answers to your product and technical questions

Documentation

What's new

Videos

EN 日本語

HERE ドキュメント

製品や技術に関する質問の答えを見つけましょう。より多くの内容と最新の情報については、英語版をご覧ください。

ドキュメント

ダイナミックマップ

動的コンテンツ関連のAPIをアプリやサービスに活用して、ドライバーが安全・快適かつ予定どおりに目的地へ到着できるよう支援します。

地図とデータ

世界中を走行する多数のマッピング車両から得られる最新の位置情報データを活用し、精度の高い地図やカスタムレイヤーを構築できます。

最新情報

動画

(function () { const input = document.querySelector('input[data-typeahead]'); if (!input) return; // Prevent the form from submitting/navigating input.closest('form')?.addEventListener('submit', e => e.preventDefault()); input.addEventListener('input', function () { const q = this.value.trim().toLowerCase(); document.querySelectorAll('.nav-group-name').forEach(group => { let anyVisible = false; group.querySelectorAll('.nav-group-task').forEach(task => { const text = task.textContent.trim().toLowerCase(); const show = !q || text.includes(q); task.style.display = show ? '' : 'none'; if (show) anyVisible = true; }); // Hide the whole group header if nothing matches group.style.display = anyVisible || !q ? '' : 'none'; }); }); })(); (function () { function onTokenClick(event) { var link = event.target.closest('.sdk-for-ios .item .token'); if (!link) return; event.preventDefault(); console.log('token clicked', link.textContent.trim()); var item = link.closest('.item'); if (!item) return; var content = item.querySelector('.height-container'); if (!content) { console.log('no .height-container found for item', item); return; } var isHidden = window.getComputedStyle(content).display === 'none'; content.style.display = isHidden ? 'block' : 'none'; link.classList.toggle('token-open', isHidden); var href = link.getAttribute('href'); if (href) { if (history.pushState) history.pushState({}, '', href); else location.hash = href; } } function openHashTarget() { var hash = window.location.hash.slice(1); if (!hash) return; var anchor = document.querySelector('.sdk-for-ios a[name="' + hash + '"]'); if (!anchor) return; var item = anchor.closest('.item'); if (!item) return; var link = item.querySelector('.token'); var content = item.querySelector('.height-container'); if (!link || !content) return; content.style.display = 'block'; link.classList.add('token-open'); } function init() { console.log('HERE SDK accordion init'); openHashTarget(); } document.removeEventListener('click', onTokenClick); document.addEventListener('click', onTokenClick); if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } window.addEventListener('hashchange', openHashTarget); window.addEventListener('pageLoad', init); })();