Azure sql serverのtableに場所名とその位置情報を保存している。
現在地からの距離順で場所を表示させる方法。
Azure mobile serviceのtableスクリプトを利用する。
読み取り操作に、以下のスクリプトを入れる。
requestのパラメータとして、現在地の経度と緯度をserver scriptに渡す。
SHOPINFOのGPSLOC列から位置情報を取り出し、距離を計算する。
function read(query, user, request) {
var lat = request.parameters.lat;
var lng = request.parameters.lng;
var sql = "DECLARE @g geography;"+
"SET @g = geography::Point(?,?, 4326);"+
"SELECT *,round(@g.STDistance(GPSLOC),0) as DIST from [dbo].SHOPINFO order by DIST;"
mssql.query(sql,[lat,lng],{success: function(results) {
request.respond(200,results);
}
})
}
アプリから、get methodで以下のURLにアクセスする。
https://abcdef.azure-mobile.net/tables/shopinfo?lat=latitudeFromGps&lng=longitudeFromGps
参考になったページ:http://hatsune.hatenablog.jp/entry/2014/02/06/092155
2014年4月11日金曜日
2014年2月24日月曜日
sql serverによる2点間の距離を出す
位置gとsql serverに保存している位置h間の距離を出すには、以下のTransact-SQLを使用
DECLARE @g geography;
DECLARE @h geography;
SET @g = geography::Point(35. 66263195952044,139. 7095092421263, 4326);
set @h = (select location from [dbo].[Landmark] where id=1);
SELECT @g.STDistance(@h);
DECLARE @g geography;
DECLARE @h geography;
SET @g = geography::Point(35.
set @h = (select location from [dbo].[Landmark] where id=1);
SELECT @g.STDistance(@h);
ラベル:
sql server,
位置情報,
距離
登録:
投稿 (Atom)