サーバー構築不要!スマートフォンアプリ向けの新クラウド

トップ >ドキュメント >位置情報検索(Unity):基本的な使い方

位置情報検索(Unity)

基本的な使い方

位置情報について

NCMBGeoPointは、位置情報を扱うための構造体です。
プロパティは以下の通り緯度・経度となっております。
緯度は-90.0~90.0、経度は-180.0~180.0まで設定できます。

// Latitude:  緯度 -90.0~90.0
// Longitude: 経度 -180.0-180.0

位置情報の保存

位置情報をmobile backendで扱うには、構造体であるNCMBGetPointを利用します。
NCMBGetPointのインスタンスを作成する際、引数に緯度経度を設定することが可能です。
引数なしの場合はどちらも0がセットされます。
※端末のGPS機能などを利用した位置情報の保存については、UnitySDKでは対応しておりません。

以下の例では、新宿駅の座標を指定してNCMBGeoPointのオブジェクトを生成しています。

//新宿駅の位置情報オブジェクトを作成
double latitude = 35.690921;
double longitude = 139.700258;
NCMBGeoPoint geoPoint = new NCMBGeoPoint (latitude, longitude);

//NCMBObjectに位置情報をセットして保存
NCMBObject obj = new NCMBObject ("Places");
obj.Add ("point", geoPoint);
obj.Add ("areaName", "新宿駅");
obj.SaveAsync ((NCMBException e) => {
    if (e != null) {
        //失敗時の処理
    } else {
        //成功時の処理
    }
});

位置情報の検索

位置情報の検索は、距離か範囲を指定することができます。

検索距離を半径で指定する

検索距離を指定する場合は、検索開始地点の位置情報とそこからの検索距離を指定します。
指定する場合は、キロメートル、マイル、ラジアンで指定可能です。
また、検索距離を指定せずに検索をかける事もできます。その場合は検索開始地点から近い順に、
保存されている位置情報のオブジェクトが取得されます。

以下の例では、新宿駅の位置情報を検索開始地点に指定し、距離(5キロメートル)を指定しています。

//新宿駅の位置情報オブジェクトを作成
NCMBGeoPoint geo = new NCMBGeoPoint (35.690921, 139.700258);

//新宿駅から半径5キロを検索距離に指定
NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> ("Places");
query.WhereGeoPointWithinKilometers ("point", geo, 5);

//オブジェクト検索を実行
query.FindAsync ((List<NCMBObject> objList ,NCMBException e) => {
    if (e != null) {
        //失敗したときの処理
    } else {
        //検索結果から位置情報を取得し、ログ出力
        foreach (NCMBObject obj in objList) {
            NCMBGeoPoint resultGeo = (NCMBGeoPoint)obj ["point"];
            Debug.Log ("Latitude : " + resultGeo.Latitude + "Longitude : " + resultGeo.Longitude);
        }
    }
});

検索範囲を矩形で指定する

検索範囲で指定する場合は、検索範囲となる矩形の左下(南西)と右上(北東)の位置情報を設定し、
その範囲内で保存してあるオブジェクトの検索を行います。

以下の例では、南西に新宿、北東に池袋を指定し、その範囲内の検索を行っています。

NCMBGeoPoint southwest = new NCMBGeoPoint (35.690921, 139.700258);  //新宿駅
NCMBGeoPoint northeast = new NCMBGeoPoint (35.728926, 139.71038);   //池袋駅

//範囲内オブジェクト全検索
NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> ("Places");
query.WhereWithinGeoBox ("point", southwest, northeast);

//結果のエラー有無とエリア名リスト
query.FindAsync ((List<NCMBObject> objList ,NCMBException e) => {
    if (e != null) {
        //検索失敗時の処理
    } else {
        //検索結果から位置情報を取得し、ログ出力
        foreach (NCMBObject obj in objList) {
            NCMBGeoPoint resultGeo = (NCMBGeoPoint)obj ["point"];
            Debug.Log ("Latitude : " + resultGeo.Latitude + "Longitude : " + resultGeo.Longitude);
        }
    }
});

お探しの内容が見つからなかった場合はユーザーコミュニティ もご活用ください。(回答保証はいたしかねます)
なお、 Expertプラン以上のお客様はテクニカルサポートにてご質問を承らせて頂きます。

推奨画面サイズ1024×768px以上

ページの先頭へ