位置情報検索(Android)
基本的な使い方
Contents |
概要
このページでは、アプリから位置情報検索を行う方法について解説します。
位置情報をデータストアに保存する
位置情報をデータストアに保存する場合は、putメソッドを使ってLocationクラスを設定します。
以下のサンプルコードはTestClassクラスにgeoキーに位置情報データを設定し、保存を行うコードとなります。
Location geo = new Location("test");
geo.setLatitude(10.0);
geo.setLongitude(10.0);
NCMBObject obj = new NCMBObject("TestClass");
try {
obj.put("geo", geo);
obj.saveInBackground(new DoneCallback() {
@Override
public void done(NCMBException e) {
if (e != null) {
//エラー発生時の処理
} else {
//成功時の処理
}
}
});
} catch (NCMBException e) {
e.printStackTrace();
}
位置情報の検索
位置情報の検索を行う場合は、距離か範囲を指定して検索を行います。
検索距離
検索距離を指定する場合は、検索開始地点の位置情報とそこからの検索距離を指定します。
検索距離は、キロメートル、マイル、ラジアンで指定可能です。
Location point = new Location("sdk-test");
point.setLatitude(30.0);
point.setLongitude(30.0);
NCMBQuery<NCMBObject> query = new NCMBQuery<>("TestClass");
//pointで指定した位置から半径10km以内の位置情報をlocationフィールドに持つデータを検索する
query.whereWithinKilometers("location", point, 10);
query.findInBackground(new FindCallback<NCMBObject>() {
@Override
public void done(List<NCMBObject> results, NCMBException e) {
if (e != null) {
//検索失敗時の処理
} else {
//検索成功時の処理
}
}
});
検索範囲
検索範囲で指定する場合は、検索範囲となる矩形の左下(南西)と右上(北東)の位置情報を設定し、
その範囲内で保存してあるオブジェクトの検索ができます。
Location southwest = new Location("sdk-test");
southwest.setLatitude(30.0);
southwest.setLongitude(30.0);
Location northeast = new Location("sdk-test");
northeast.setLatitude(60.0);
northeast.setLongitude(60.0);
NCMBQuery<NCMBObject> query = new NCMBQuery<>("TestClass");
//southwest(左下)とnortheast(右上)で指定された
//検索範囲内の位置情報をlocatioフィールドに持つオブジェクトを検索する
query.whereWithinGeoBox("location", southwest, northeast);
query.findInBackground(new FindCallback<NCMBObject>() {
@Override
public void done(List<NCMBObject> results, NCMBException e) {
if (e != null) {
//検索失敗時の処理
} else {
//検索成功時の処理
}
}
});
お探しの内容が見つからなかった場合はユーザーコミュニティ
もご活用ください。(回答保証はいたしかねます)
なお、 Expertプラン以上のお客様はテクニカルサポートにてご質問を承らせて頂きます。
推奨画面サイズ1024×768px以上