View in English

  • メニューを開く メニューを閉じる
  • Apple Developer
検索
検索を終了
  • Apple Developer
  • ニュース
  • 見つける
  • デザイン
  • 開発
  • 配信
  • サポート
  • アカウント
次の内容に検索結果を絞り込む

クイックリンク

5 クイックリンク

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • トピック
  • すべてのビデオ
  • 利用方法

その他のビデオ

ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。

  • 概要
  • トランスクリプト
  • MapKitとMapKit JSの新機能

    MapKitとMapKit JSを使用すると、フル機能のAppleマップをAppやWebサイトで利用することができます。このセッションでは、ベースマップ表示の詳細な制御、きめ細かい検索機能、地点および住所情報の検索結果のフィルタリング、カスタムオーバーレイおよび注釈の標準データフォーマットの統合といった最新機能について説明します。

    リソース

    • Apple Developer: MapKit JS
    • Displaying Indoor Maps with MapKit JS
    • MapKit
    • Maps Web Snapshots
    • Optimizing Map Views with Filtering and Camera Constraints
      • HDビデオ
      • SDビデオ
    • プレゼンテーションスライド(PDF)

    関連ビデオ

    WWDC19

    • インドアマッププログラムの紹介
    • AppとWebサイトにインドアマップを追加する
    • Core Locationの新機能
  • このビデオを検索

    (音楽)

    (拍手) こんにちは お集まり頂きありがとうございます MapKitチームのアレキサンダーです

    Apple Mapsは世界を旅する大勢の人を 毎日 助けています 大勢のデベロッパがMapKitを使い アプリケーションと連携し すばらしい位置情報サービスを ユーザに提供しています 昨年 MapKit JSを公開し ウェブサイトでも利用可能になりました

    月曜日の基調講演で iOS 13のマップの新機能が 披露されました マップの今後が楽しみです その中でも今年は特に MapKitとMapKit JS内に 皆様が待ち望んでいた 新機能の構築に奮闘しました ようやくそれを皆様にお伝えでき とてもうれしいです その前に少しだけ 新しいベースマップについてお話します

    私たちはマップを まったくのゼロから再構築しました 特注の車や飛行機で網羅した道は 640万キロメートル以上におよびます

    非常に詳細なマップで 新しいフィーチャもあります 例えば 野球場 競技用トラック 歩道 プールなどです

    さらに公園 緑道 ビーチや地方の 情報量と正確さが大幅に向上しています 道路 建物 都市公園など 他にもたくさんあります

    住所の詳細も格段に改善され より正確な検索と道案内が可能です 最大の利点は MapKitとMapKit JSを通じ これらが自動で利用可能になることです

    新しいマップは2019年末に 全米で利用可能になり 翌年には利用国を追加します ダークモードでもお使い頂けます iOS tvOS macOS

    ウェブサイト

    今回は 仮のWWDCコンパニオンAppを使い 実証しながらお話しします サンプルコードとして利用可能です

    どんなアプリケーションか 簡単にお見せします 会議参加者の皆様に役立つ 主要な機能が3つあります

    1つ目は宿泊施設の検索機能です 会議の期間中に提携している宿泊施設を このアプリケーションで探せます マップに注釈が たくさん追加されています

    2つ目は会議のあとに寄れる レストランやバーを検索できる機能です 他の参加者と会議後に集まれます 検索フィールドに入力します すると関連する レストランやバーの検索結果が 注釈としてマップに表示されます

    最後の機能はイベント検索です

    公式のBash前に開催される イベントを表示したマップです イベント開催場所に絞って 表示する機能です 食事 ドリンク ステージを表す 注釈とオーバーレイが表示されます

    それでは残りの時間で MapKitとMapKit JSの新機能を 詳しく見ていきます 本日の話題は豊富です スナップショットの 新フィルタリングAPIと カメラコントロールです まずはスナップショットです スナップショットはマップの静止画像で MapKitのMKMapSnapshotterは よくご存じかと思います アプリケーション内で使いますが ユーザインタラクションは不要で 連絡先 メッセージ カレンダーと同じです

    しかしMKMapSnapshotterは MapKitの一部なので ネイティブAppでしか作れません しかし今週 新サービスを公開し 別の環境でもスナップショットが 作成可能になりました それをMaps Web Snapshotsと呼びます サービス取得に必要なのはURLだけです URLのパラメータが 画像の特性を決定します 例えば中心座標や大きさなどです ダークモードで同じマップを 使いたければ カラースキームパラメータを 追加できます

    全スナップショットURLに シグネチャが必要です Apple Developer Programから MapKit JS APIキーを取得できます

    MapKit JSベータ版の一部として 1日2万5000回のリクエストが可能です 十分ニーズにお応えできると思います

    URLを使い どこにでもマップ画像が表示できます Eメール URLプレビュー ウェブページなど

    スナップショットURL生成用に ツールを開発しました そのツールや MapKit JSベータ版の詳細は デベロッパページにあります

    Maps Web Snapshotsの次は

    ダークモードのマップについて お話します 昨年macOSで公開した ダークモードのマップは 今年 iOS tvOS ウェブサイトに拡大します

    では利用に何が必要でしょうか

    MKMapViewはビュー階層に適用した traitCollection内のUIスタイルに 自動適応します つまりビューが暗ければ マップビューは自動適応します

    過去にtvOSでMapKitの 使用経験があればご存じでしょうが 古いマップは自動で 改良版に入れ替わります

    マップ内で ユーザインタラクションが不要な場合 MKMapSnapshotterが適切なツールです しかしアプリケーション内の ビュー階層を認知できません

    MKMapSnapshotterで重要なのは ビュー階層のUIスタイルと スナップショットを合致させることです MKMapSnapshotter.Optionsを使います 例を見てみましょう

    まずMKMapSnapshotter.Optionsを 作成します スナップショットのエリアを設定し 同様にサイズも設定します

    ビュー同様 スナップショットの外観設定には traitCollectionの UIスタイルを使います 表示させたい場所が決まっているなら ターゲットビューのtraitCollectionを 取得するのが簡単です これにより スナップショットは ビュー階層のUIスタイルと合致します iOSのユーザはいつでもダークモードに 切り替え可能なので traitCollectionの変更を 監視して下さい いつ切り替えても スナップショットを再生成できます

    場合によっては 他のデバイスと共有していて ターゲットビューが ないこともあり得ます その場合 適切なUIスタイルで UITraitCollectionを作成できます

    オプションを設定して MKMapSnapshotterに渡すだけで スナップショットを作成してくれます

    ダークモードのマップ使用は 非常に簡単です

    次はMapKitとMapKit JS内の 新しいAPIについてです マップビューに表示する POIアイコンを管理できます

    マップを見てみると 道路 建物 公園 水場以外にも 小さなアイコンがあります レストラン 博物館 駐車場などです ユーザが自分の見ているエリアを 知るのに重要な情報です

    しかし例えば ホテルやホステルを 宣伝したいとします 注釈として表示したい 独自のデータをお持ちでしょう 既存のアイコンを 見せたくない場合もあります 追加する情報と重複してるものや 自分のサービスに関係ない 企業名などです

    これまではPOIアイコンを すべて消すしか方法がなく ユーザは貴重なコンテキストを 逃していました カテゴリに基づきPOIアイコンを フィルタリングしたいです

    そのため今回 MapKitとMapKit JSは カテゴリリストを用意しました (拍手) すべてを網羅していないので 不足があれば 明日ラボに来るか フィードバックを下さい ユースケースを知ることが重要です

    カテゴリを使い pointOfInterestFilterを作成し その際にどのカテゴリを 含めるか除くかを設定できます 例を見てみましょう

    デフォルトでは フィルタを適用しないので 全POIアイコンが表示されます ホテルやホステルなどを 表示させたくない場合 ホテルのカテゴリで 除外フィルタを作成します ホテルは非表示になり 他のコンテキストは残ります

    関連するカテゴリが分かっていれば それらのカテゴリで 包含フィルタも作れます 例えばこのフィルタは 裁判所や美容院と理髪店を 除外します レストランとナイトライフ 駐車場とカフェだけを表示します

    全POIアイコンを非表示にするには 全除外フィルタを使います

    今秋にはMapKit JSでも サポートされます 動作もほぼ同じです pointOfInterestFilterを MapKitオブジェクトに追加し POIカテゴリリストを使って フィルタを作成します フィルタ作成後 pointOfInterestFilterに適用します

    マップビューはMapKitとMapKit JSの 最も優れた機能です もう1つの要は検索と オートコンプリートへのサポートです 次にお話しするのは フィルタリングを使った検索と オートコンプリートの改善方法です

    コンパニオンAppは MapKitの検索とオートコンプリートを 使用しています 文字を打つと MKLocalSearchCompleterから 候補を受け取ります 検索結果は MKLocalSearchを使い取得します 候補をもう一度見てみましょう ユーザはバーやレストランを 検索すると予測しており 中学校はあまり関連性がありません

    マップビューで使った pointOfInterestFilterが 検索とオートコンプリートにも使えます

    検索用にフィルタを作成し MKLocalSearchCompleterに適用します そしてMKLocalSearch.Requestに 適用すると より関連性のある結果に絞られます

    リストにまだ住所が残っています これは明らかにPOIと異なるからで 大抵がランドマークや企業です リストをより向上させるため 検索結果や候補を POIだけに絞りたいです

    これまではfilterTypeプロパティを 使ったフィルタリングだけを サポートしていました

    しかし ロケーション値は 住所とPOIの両方を含み ここでは役に立ちません そこでResultTypeと呼ぶ 新オプションを2つ紹介しました 検索とオートコンプリート両方で 必要な結果のタイプを設定できます

    MKLocalSearchCompleterに 設定できるのは 住所 POI クエリの組み合わせです

    MKLocalSearch.Requestは 住所とPOIから選べます

    これで簡単にcompleterと リクエストの設定を POIだけに絞れます

    MKLocalSearchから返される結果は MKMapItemの配列です MapItemは位置座標や 住所などの役立つ情報を多く含み 場所の名前 電話番号 URLまで 分かります

    結果のタイプを推測しやすいように POIカテゴリという プロパティを追加しました 例えばABCと検索してみます そうすると AI's Beet CanteenとABC Brewingが 出てきたとします これらのPOIカテゴリを調べると レストランと醸造所だと分かります

    醸造所のカテゴリで 包含フィルタを適用すると AI's Beet Canteenは出てきません しかしABC Brewingが レストランも経営しており レストランのカテゴリで 包含フィルタを適用したとします すると検索結果に出てきます ABC BrewingのPOIカテゴリを見ると 主要なカテゴリである醸造所のままです

    同様のフィルタリングが MapKit JSにも今秋サポートされます pointOfInterestFilterを 直接検索オブジェクトに適用します 結果を絞るため 新しいプロパティの includeAddresses includePointOfInterest includeQueriesを使います

    それでは同僚のナリーニに交代し 新しいAPIを使い検索結果を 向上させる方法をお見せします (拍手) ありがとう MapKit Frameworkチームのナリーニです すでにお見せした WWDCコンパニオンAppは 機能を一部実装したバージョンも ありますが不完全です ご覧ください サンノゼ周辺で会議終わりに 寄れる店を探ります ここに設けられた検索バーは MKLocalSearchCompleterと MKLocalSearchを使います iOS9.3から搭載された機能です 何か検索してみます

    文字を打つと検索候補が出てきます 会議参加者にとって 興味のない結果もあります 検索を実行します

    前にもありましたが 関係のない結果が返ってきました pointOfInterestFilterと ResultTypeを使い改善します

    オートコンプリートと検索を 設定するView Controllerです pointOfInterestFilterを宣言し

    オートコンプリートと検索の 両方に使います 興味のあるカテゴリは ナイトライフとレストランです searchCompleterに pointOfInterestFilterを適用します

    住所結果は必要ありません ResultTypeをPOIに限定します

    変更はオートコンプリートに影響します 同じフィルタを検索に適用します

    検索すると Local Searchリクエストが作成されます 検索リクエストに pointOfInterestFilterを適用し

    ResultTypeをPOIに制限します

    これでオートコンプリートと検索の 両方に適用されました 実行してみます

    先程と同じ文字列で検索してみます

    ご覧のとおり 関連のある結果だけが得られました

    検索すると関連のある結果が 注釈として表示されます pointOfInterestFilterと ResultTypeを使い 検索とオートコンプリートが 改善しました アレキサンダーに交代します (拍手) 以上が 無関係な結果を取り除くための 5行のコードでした オートコンプリートをお使いなら 新しいAPIをぜひお試し下さい

    検索とオートコンプリートについては 以上です

    次にオーバーレイの 改善についてお話しします オーバーレイはマップに独自の コンテンツを重ねるために使われ 線や多角形のような 幾何学的形状をしています

    イベントビューでこれらの 改善を見てみます

    イベントマップをマップビューに レンダリングしたいです

    飲食場所やステージを表すため オーバーレイを使います 今回はすべて長方形ですが MKPolygonで形成できます 今回は時間がないので すべて同じスタイルにします オーバーレイはそれぞれに レンダーするオブジェクトが デリゲートメソッドに必要です 同一のオーバーレイを大量に追加すると 同一構成のオブジェクトを 大量に作成することになります これは無駄です

    7つのオーバーレイでは 大した影響はないでしょう しかしより多くのオーバーレイを 追加する場合 パフォーマンスに影響が出ます

    この対処策として新しく導入したのが MKMultiPolygonと MKMultiPolylineです ポリゴンとポリラインの分類に使えます

    オーバーレイを追加するたびに レンダーするオブジェクトが必要です そこで新しく公開したのが MKMultiPolygonRendererと MKMultiPolylineRendererです

    アプリケーション内で作成する オブジェクトが激減し 動作も改善されます 例を見てみます

    ステージ用のポリゴンを作成します すべてのポリゴンを そのままマップビューに追加すると デリゲートメソッドはレンダー対象を 7つ要求します 代わりにポリゴンをすべて MKMultiPolygonにグループ化し MultiPolygonを マップビューに追加します

    MultiPolygon追加用に コードを更新したら デリゲートメソッドの更新も必要です そこでMKMultiPolygonRendererを 作成します 古いMKPolygonRendererと まったく同じ方法です

    レンダーするオブジェクトを 減らすとメモリを節約でき パフォーマンスが向上します MapKitがポリゴンの レンダリングを一括処理できるからです

    さらにMapKitは オーバーレイの自動レンダリングを 可能にします オブジェクトをビットマップではなく ベクターとして扱います これによりオーバーレイの外観が 大幅に改善され マップを拡大縮小しても きれいに表示されます

    複雑なオーバーレイを追加するなどして 正しく表示されない場合 shouldRasterizeプロパティを使えば ベクター化を無効にできます

    以上がオーバーレイの利用方法です (拍手) 次はGeoJSONについて 話したいと思います GeoJSONは広く使われている フォーマットで 点や線や多角的な形状を 記述することができます 多くのベンダーが GeoJSONで公開しています なのでマップビューに追加するために すでにコードを 書いている人もいるでしょう この新しいAPIで GeoJSONはより簡単になります 長いコードを消すことができます (拍手) まだ親しみのない人のために 位置を示す 簡単な一例を紹介しましょう 一番上にはtypeのメンバーがあり これがフィーチャだと示しています

    ここに識別子を付けることで 他の物体と 区別することができます

    その結果 1つの地点として定義されます 複数の地点を示すこともできます ジオメトリの次は プロパティを加えます 今回の場合は stageという名前を追加しました

    これをMapKitで表現するための MKGeoJSONFeatureという クラスを紹介します これは識別子と デコードされたジオメトリと プロパティを保持する データコンテナです

    そして GeoJSONのデータを MapKitに送るのが MKGeoJSONDecoderという クラスです SwiftのJSONDecoderを 使ったことがある人は MKGeoJSONDecoderも 親しみやすいでしょう 単にデコーダを作成し データを渡せば MKGeoJSONFeatureの 配列を返してくれます

    もしくはMKPolygonや MKPolylineといった MapKitのジオメトリを返します それはGeoJSONの構造によります トップレベルにフィーチャがあるか ジオメトリがあるかで変わります

    例を見てみましょう デコードされる前のGeoJSONです これは1つの地点を表しているので 返される配列も1つです しかしデコーダもジオメトリを MapKitに送ります なので この地点の情報は― MKPointAnnotationとして デコードされます 他はMKPointAnnotationを 参照して MKGeoJSONFeatureに デコードされます

    MKMultiPolygonと MultiPolylineによって MapKitは 完全な地図作成を実現しました GeoJSONをデコードするだけで マップの注釈に情報を 追加することができます

    例を見てみましょう

    まずデコーダを作成します 次にデータを渡します GeoJSONの構造によりますが トップレベルにフィーチャがあるか あるいはジオメトリがあるか

    もしフィーチャをパースしているなら ジオメトリのプロパティも使います ポリゴンやポリラインに アクセスするためです この例で言うと― フィーチャもジオメトリも1つです コードは仮定で設定しています 多くの場合 コードのこの部分に― MKPolygonや MultiPolylineを入れます

    GeoJSONの仕様では プロパティは有効なJSONにも nullにも なり得ます なのでデータ解析において 仮定を設定できません そのためデータタイプとして プロパティを網羅します もしプロパティの構造を知るなら JSONDecoderを使います データを適切なモデルクラスに 落とし込みます このケースではプロパティは 文字列を含みます なので単純に辞書にマッピングします これにより 名前の値を読み取れます

    しかしGeoJSONを 管理していない場合 プロパティの構造が分かりません その場合はJSON Serializationを使います そのタイプに応じて プロパティを探索できます

    次はMapKit JSです MapKit JSでも GeoJSONが使えるので 既存のMapKit JSにマッピングできます 注釈やオーバーレイなどです 例を見てみましょう URLか有効なGeoJSONオブジェクトを 単にimportGeoJSONに渡すだけです

    この機能は1つか複数のアイテムを 返してくれます これにより簡単に 地図上にオブジェクトを追加できます

    もう一度 ナリーニに登場してもらって 地図上にレンダリングする方法を 見せてもらいます (拍手)

    コンパニオンAppの構築を続けます ここは会場となる公園です その中のコンサートエリアです コンサートには飲食が不可欠です そのためのテントが必要ですね オーバーレイと注釈を レンダリングします GeoJSONフォーマットを使います データを見てみましょう

    2つのフィーチャがあります トップレベルで グループ化されています 1つ目のフィーチャはテントです 多くの飲食物を出すには 多くのテントが必要です テントを示すのは MultiPolygonです これらはテントの異なる座標です これを使って オーバーレイをレンダリングし 地図上にテントを表示させます

    次のフィーチャは地点です これでテントの名前を表します このデータを使って 注釈をレンダリングします これでテントに名前が付きます 2つのフィーチャをパースする コードがこれです

    ここがデータソースです JSONをロードしてパースします ロードしてみましょう

    JSONが読み込まれたら MKGeoJSONDecoderを使います デコードしてMKGeoJSONの 配列に入れます その配列をパースします パース関数を実装しましょう

    GeoJSONオブジェクトの数だけ ループします トップレベルにフィーチャがあるので MKGeoJSONFeatureとして 扱います 他のオブジェクトも同様に処理します フィーチャとジオメトリをループし MKMultiPolygonで フィルタリングします これをオーバーレイの配列に追加します これは地図にオーバーレイを 追加するための配列です ではView Controllerで オーバーレイを追加しましょう

    追加するオーバーレイごとに デリゲートメソッドに レンダラーを供給します デリゲートメソッドを設定しましょう

    MKOverlayを渡して MKOverlayRendererをもらいます レンダラーを設定しましょう

    テントのジオメトリは MultiPolygonなので オーバーレイを MKMultiPolygonとします ここで画面の表示方法を指定し テントのレンダリング方法を決めます これでオーバーレイが追加され 画面の表示方法も設定できました アプリケーションを実行しましょう

    コンサートエリアを見てみます レンダリングされたので テントのアウトラインが見えます これにテントの名前が表示されれば 飲食できる場所が分かります 注釈としてマップに表示させます データソースに戻りましょう

    注釈の追加は オーバーレイと異なります なのでオーバーレイと分離します

    注釈名はfeature.propertiesから パースします これが注釈に使用するデータです それでは関数を実装します

    地点のプロパティは 文字列の辞書を示しています SwiftのJSONDecoderを使って 文字列の辞書にデコードします 作られたデータを 注釈の配列に追加します 地図上に注釈を 追加するための配列です View Controllerから 地図に注釈を追加しましょう

    注釈の表示を設定します

    MKMapViewDefaultAnnotation ViewReuseIdentifierを使って 設定した注釈を登録します これで表示が完成したので アプリケーションに戻ります

    レンダリングされたことで テントの名前が表示されました GeoJSONから注釈と オーバーレイを生成しました しかし 地図上に 表示されている情報には 不必要なものもあります pointOfInterestFilterを使って 削除しましょう

    これで適用されたので 実行してみましょう

    ご覧のとおり簡単に変更が可能です これで必要な情報だけに集中できます それではアレキサンダーに返します (拍手) デモで示したように 新しいデコーダはGeoJSONを より使いやすくしています

    これで地図を 簡単にレンダリングできました

    しかし屋内のデータが 必要な時もあります その場合 より複雑になります

    その複雑な作業を 簡略化してくれるのが IMDFというフォーマットです IMDFは先ほどのGeoJSONを ベースに作られています IMDFは屋内の包括的な モデルを提供し JSON準拠なものなら何でも取り扱えます 屋内データについてさらに知りたい人は このセッションがお勧めです “Adding Indoor Maps to your App and Website” 明日の午後2時からです IMDFの仕様を詳細に紹介しています

    これで新しいGeoJSONの 紹介は終わりです

    最後に紹介するのは MapKitとMapKit JSの新APIです マップビューのカメラを コントロールできます もう一度コンパニオンAppを 見てみましょう

    このビューは イベントマップを表示しています ここでサンフランシスコに 移動させる必要はありません

    今注目したいエリアに集中するために ユーザが移動できる範囲を 限定させることができます

    そこで紹介するのが cameraBoundaryクラスです 地図の中心地を指定することで 領域を定義してくれます

    その境界を作る方法は2つあります 座標を示すかmapRectを使うかです 境界を作成したら cameraBoundaryプロパティを 適用します

    しかし その前に マップビューの中心点が 境界内にあることを確認します ご存知だと思いますが もしマップビューが 境界の外にあった場合 その位置は境界の中に修正されます 恐らくユーザが 期待する場所ではありません

    一度cameraBoundaryが適用されると マップビューは固定されます 例えばsetRegionを 呼び出すとします

    その際に もし境界の外で マップビューを設定したら できるだけ近くには移動します しかし境界は守ります

    もちろんsetRegionに限りません 中心点を変更する どのAPIでも同じです

    MapKit JSにも類似機能を加えました しかし少し違います 使うのはCoordinateRegionか MapRectのどちらかです なので どちらかを当てはめて cameraBoundaryプロパティを 適用します

    これで見たいエリアを 維持する機能が加わりました しかしユーザは まだズームアウトできます この機能はカメラの境界を 領域の中心地に固定するだけです なので会場の中心にはいますが ズームアウトしているだけです なのでズームを制限する必要があります

    ズーム機能はカメラで制御されています MKMapCameraを すでに使っていれば 高度を取得するAPIが使えます しかしピッチカメラの場合 より直感的に― 地図の中心地から カメラまでの距離が分かります これでマップビューの ズームを制御します

    そこで紹介する新しいプロパティが centerCoordinateDistanceです

    これで皆さんは高度について 考えなくても大丈夫です 代わりに中心座標から カメラまでの距離を考えてください コードを書き換える際に 注意してほしいことがあります

    これまでの高度を基準にしたカメラでは カメラのピッチを変更すると 高度を維持したまま 中心座標から離れていきました

    しかし距離を基準とすれば ピッチを変更しても カメラと中心座標は離れていきません 結果的には高度が変わっていきます

    MKMapCameraは更新されたので 動作も変わります これが新しいプロパティの役割です

    新プロパティが 高度を制御できるものと分かりました しかし どう制限するのか? cameraZoomRangeという クラスを使います このクラスが定義するのは centerCoordinateDistanceの 最大値と最小値です cameraZoomRangeを適用すると カメラは指定範囲にとどまります

    なので距離基準で 最小値と最大値のクラスを作成し マップビューの 新しいプロパティに適用します 最小値と最大値のどちらかだけを 適用することも可能です

    先ほど述べたように cameraZoomRangeなしでも ズーム機能には制限があります この制限は見ている地域や マップによっても変わるでしょう 技術的な制限がある場合もありますし 法的な理由もあり得ます

    もしcameraZoomRangeを適用して デフォルトより 短い距離を設定したとします ユーザはデフォルト値以上は 近づけません 同じようにズームアウトできる 最大値にも限界があります

    カメラが適用範囲外にある場合は マップビューは カメラとの距離を修正します cameraBoudaryと同じで cameraZoomRangeを 越えることはできません

    またズーム範囲のサポートも 追加しました 新しいオブジェクトを MapKitに追加して 同じように最小値と最大値を 設定します どちらかでも大丈夫です それで新しいプロパティが 適用されます

    それでは再度 ナリーニに実演してもらいます 今回はズーム範囲の使い方と その境界線について 実際に見てもらいます (拍手) これは注釈とオーバーレイを 付けたマップです

    コンサートエリアから離れます カリフォルニア全域まで 縮小も可能です そこでズーム範囲を制限します cameraZoomRangeを 活用しましょう

    値はメートルで指定します cameraZoomRangeを 適用することで ズーム範囲を制限することができます ではアプリケーションを実行しましょう

    縮小してみても これ以上できません 拡大も試してみます

    拡大しています

    ステージが見えますね 各テントも識別できます ズーム範囲は完璧です

    しかし他の地域に 移動できてしまいます コンサートエリアに集中したいので 次はcameraBoundaryを使います

    中心を指定して MKCoordinateRegionを設定します 範囲は緯度を20メートル 経度を10メートルにします coodinateRegionを使って マップビューに cameraBoundaryを適用します すると中心地が 領域内にあると確認できます ではアプリケーションを実行しましょう

    移動を試みますが ご覧のとおりできません 拡大してみましょう

    ステージに近づきたいですね レディー・ガガがいるらしいです しかし到達できません 数値を変えてみましょう 緯度を100メートル 経度を80メートルにします これでアプリケーションを 実行してみましょう

    もう一度 拡大してみます

    ご覧のとおり近づけました トイレも見つけられます これがcameraBoundaryと cameraZoomRangeの使い方です これによりユーザは 必要な情報だけに集中できます アレキサンダーに返します (拍手) コードを少し書き換えるだけで 新しいマップビューが体験できます ぜひ使ってみてください

    マップビューにおける カメラAPIについては以上です

    今日は多くのことを伝えました なので 最後に― 今日の要点をまとめます 皆さんの復習になれば幸いです

    まずは新しいスナップショット

    スナップショットを作成し ウェブ上で使えます ユーザインタラクションが 不要な場合は ロード時のリソース浪費を避けられます

    アプリケーションによって データやコンテキストが異なります ニーズに合わせ マップビューを変えるには pointOfInterestFilterを 使います

    カギは検索とオートコンプリートです それらの関連性を高めるために pointOfInterestFilterと ResultTypeを使います

    多くのポリゴンやポリラインを 追加するなら MultiPolygonsとMultiPolylinesで グループ化します

    もしGeoJSONを使っていれば MapKitとMapKit JSの 新サポートを活用してください 必要なコードが少なくて済みます

    そして あなたのマップビューに 境界線を作りたい場合です cameraBoundaryと cameraZoomRangeを使えば 必要なエリアに集中できます

    サンプルコードなど さらに情報が欲しい方は ウェブページをご覧ください 質問があれば明日の午後3時に ラボまで来てください 今日はありがとうございました それでは いい夜を 最終日も楽しんでください (拍手)

Developer Footer

  • ビデオ
  • WWDC19
  • MapKitとMapKit JSの新機能
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード(英語)
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    Apple Developerアプリを入手する
    Copyright © 2025 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン