スマホで位置情報を取得すると
緯度/経度(lat/long)が取得される。
lat: 35.67750, lon: 139.76610
これを連続で取得すると
[
{lat: 35.67750, lon: 139.76610},
{lat: 35.67748, lon: 139.76618},
{lat: 35.67747, lon: 139.76621},
{lat: 35.67745, lon: 139.76631},
{lat: 35.67740, lon: 139.76653},
{lat: 35.67736, lon: 139.76674},
{lat: 35.67735, lon: 139.76679},
{lat: 35.67732, lon: 139.76697},
{lat: 35.67728, lon: 139.76717},
{lat: 35.67724, lon: 139.76737},
{lat: 35.67709, lon: 139.76779},
{lat: 35.67708, lon: 139.76779}
]
こんな感じになる。
しかし、これだけだと、ただの位置情報の羅列。
滞在した箇所と、移動していた箇所を整理したい、
考え方
上記で取得できる位置情報データをイメージにすると、こんな感じ。
なんとなく視覚的にすると、この辺りが滞在していたのかな?と考えられる。
- 判定に使う情報
- 緯度経度(lat/long)
- 取得時間(timestamp)
アプリに組み込むときに気をつけること
スマホで取得する位置情報は急に、実際の滞在場所ではない場所を記録する。
スマホは、GPSやWifiなどを利用して位置情報を取得するのですが、建物の中外や、Wifiが切り替わるタイミングなどで急に外れたポイントを記録します。
対応方法
緯度経度(lat/long)
と 取得時間(timestamp)
から移動速度を取得して、急に 200km/h
とかになると外れ値として、判定から除外する。
前後の速度と比較して、10倍以上になると、大体外れ値でした。
スマホが休んで、位置情報を記録しなくなる。
バックグラウンドで取得しているときに、位置情報が取得されていないポイントが複数箇所存在。
AndroidとiPhoneでも記録のタイミングや休みポイントが異なります。
対応方法
位置情報が取れていない場合は、ほとんど諦めるしかないです。
写真などの位置情報から補間しています。
バッテリー消費が激しい
位置情報を高精度で取得し続けると、バッテリー消費は激しくなります。
対応方法
用途に応じて、取得する精度を調整することでバッテリー消費を抑えることができます。