位置情報検索(JavaScript)
基本的な使い方
位置情報について
NCMBGeoPointは、位置情報を扱うためのクラスです。
プロパティは以下の通り緯度・経度となっています。
//緯度:-90.0~90.0
latitude
//経度:-180.0~180.0
longitude
NCMBGeoPointオブジェクトの作成
位置情報のオブジェクトを作成する場合は、new演算子を利用します。
以下の例の用に、latitude, longitudeの順で設定した値で初期化され、初期値がない場合は0でオブジェクトが作成されます。
var geoObject1 = new ncmb.GeoPoint(); // defaults to (0,0)
var geoObject1 = new ncmb.GeoPoint(12,133);
var geoObject1 = new ncmb.GeoPoint(30.0, 30.0);
位置情報をデータストアに保存する
位置情報をデータストアに保存するには、setObjectでNCMBGeoPointクラスのオブジェクトをセットし、save系メソッドで保存します。
例1 save を使用し、新宿駅の座標をデータストアに保存しています。
var latitude = 35.690921;
var longitude = 139.700258;
var geoPoint = new ncmb.GeoPoint(latitude, longitude);
var Places = ncmb.DataStore("Places");
var point = new Places();
point.set("areaName", "新宿駅");
point.set("point", geoPoint);
point.save()
.then(function(){
})
.catch(function(err){
// エラー処理
});
すでに生成されているgeoPointの位置情報を変更して保存する事もできます。
例2 save を使用し、高田馬場駅の座標をデータストアに保存しています。
var geoPoint = new ncmb.GeoPoint(); // (0,0)で生成
geoPoint.latitude =35.712285;
geoPoint.longitude = 139.703782;
var Places = ncmb.DataStore("Places");
var point = new Places();
point.set("areaName", "高田馬場駅");
point.set("point", geoPoint);
point.save(function(err, data){
});
位置情報に対するクエリ
位置情報のクエリ設定は、検索距離の指定と、検索範囲の指定が可能です。
検索距離を指定した場合は、検索を開始する地点から近い順にデータを取得します。
var origin = new ncmb.GeoPoint(0, 0);
//検索開始位置を指定
near("location", origin)
//検索開始位置と距離をキロメートルで指定
withinKilometers("location", origin, 1000)
//検索開始位置と距離をマイルで指定
withinMiles("location", origin, 800)
//検索開始位置と距離をラジアンで指定
withinRadians("location", origin, 0.3)
範囲を指定して検索する場合は、南西と北東の頂点位置から指定した矩形の内部にあるデータを取得します。
var southWest = new ncmb.GeoPoint(20, 50);
var northEast = new ncmb.GeoPoint(50, 0);
//検索範囲の左下と右上の位置を指定
withinSquare("location", southWest, northEast)
位置情報が設定されているプロパティは、以下のように取得されます。
{__type:"GeoPoint",longitude:「経度」,latitude:「緯度」}