位置情報管理

Kii Cloud SDK では、JSON ドキュメントへの位置情報(GeoPoint)の格納や、位置情報に基づくデータ検索の機能を提供しています。

位置情報の表現

Kii Cloud での位置情報は、JSON ドキュメントに値を格納する際のデータ型として定義されています。

位置情報は、緯度と経度を内部に持った GeoPoint として設定できます。たとえば、以下のように location キーに対する値として、GeoPoint を設定できます。なお、この図では、REST API や開発者ポータルで使用する JSON 形式で位置情報を表現していますが、Kii Cloud SDK では KiiGeoPoint クラス(Android では GeoPoint クラス)を使って位置情報を指定します。

KiiObject の内部には任意の個数の位置情報を保持できます。たとえば、entrance キーと exit キーでトンネルの入り口と出口を表現した KiiObject を定義することもできます。

緯度と経度は、実数のフィールド 2 つを使っても KiiObject に格納できますが、GeoPoint として保持しておくと、下記に示す 検索機能 を使用できます。位置情報は 2 次元空間上でデータ表現されているため、単純な大小比較では実行できないようなクエリーを使用できます。

GeoPoint の設定と取得方法の詳細については キーと値のペアの設定キーと値のペアの取得 を参照してください。

検索機能

位置情報に基づいて、以下の 2 通りの方法で KiiObject を検索できます。このような位置情報に基づく検索を、他の検索(例:「"score" が 70 より大きい KiiObject を検索」)と組み合わせて行うことができます。

  • GeoBox 検索

    緯度経度を 2 つ指定して、その長方形エリアに含まれる KiiObject を検索できます。

    たとえば「location キーが緯度経度 (lat1, lon1) から (lat2, lon2) に含まれる」かつ「above_sea_level キーが 10 以上」のような条件で検索できます。

  • GeoDistance 検索

    円の中心となる緯度経度と距離を指定して、その円内に含まれる KiiObject を検索できます。

    たとえば「location キーが緯度経度 (lat1, lon1) を中心として 2km 圏内に存在する」かつ「above_sea_level キーが 10 以上」のような条件で検索できます。

位置情報を使った検索方法の詳細は、KiiObject の検索 を参照してください。