地図アプリの作成
地図を利用したアプリの作成について調べる。特に今回は位置情報ゲームの支援ツールを作りたいので地球上の範囲をS2セルという概念で分割してその範囲に対して色々と処理を行うことを想定している。
S2セルとは
球体が四角い箱(立方体)で囲まれており、この箱の 6 つの面が球体上に投影されている様子を思い浮かべてください。この球体は地球であり、その地表が、周りを囲む 6 つの正方形に等分割されるとしましょう。これらの正方形を「S2 セル」といい、実際には各辺が湾曲しています。
この 6 つの大きなセルは、「基本セル」または「レベル 0 のセル」と呼ばれます。これが S2 セルの基本概念です。次に、それぞれの基本セルを 4 つに等分割します。6×4=24 のサブセル(レベル 1 のセル)ができます。6 つの基本セルは、それぞれに属するサブセルの「親」になります。
同様に、各サブセルをさらに小さな 4 つのセルに分割すると、「レベル 2 のセル」になります。このプロセスをさらに 28 回繰り返すと、6×430 個のセルが地球上を覆い、各セルは 1 辺が約 10 cm になります。これらはレベル 30 のセル(最も細かいセル)です。
S2 セル(すべてのレベルの S2 セル)には、それぞれ一意の識別子(s2CellId)が割り当てられます。Playable Locations API ではこの識別子(64 ビットの整数)を使用して、プレイアブル ロケーションの対象エリアを指定します。S2 セルには親子関係があり、階層構造になっています。そのため、空間インデックスに容易に対応でき、データベースからプレイアブル ロケーションをすばやく取得できます。
Map色々
Google Mapは無料で使える範囲が昔に比べてだいぶ狭まったので注意が必要。地図読み込み1回で1unitの課金。読み込んでからdynamicに移動させたりは別に課金対象ではないらしい。
代替の地図機能を使うのも考えた方がよさそう。
リンク
Google Maps APIのDocs
S2について
GIS関連の開発メモ
Google Map代替のOpen Street Mapに対応したOSSな地図ライブラリ