2014年4月11日金曜日

Azure sql server上保存された場所を現在地からの距離順で表示

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