お世話になります。
レコードの新規追加時に現在地もしくは他の場所の緯度経度を取得し
レコードの初期値でデータをセットすることは可能なのでしょうか?
よろしくお願いします。
お世話になります。
レコードの新規追加時に現在地もしくは他の場所の緯度経度を取得し
レコードの初期値でデータをセットすることは可能なのでしょうか?
よろしくお願いします。
k_chinenさん、こんにちは。
プロジェクト・アスノートの松田です。
現在位置を取得する方法として、Geolocation APIというものを活用することで、デバイスの現在位置の緯度経度を取得することができます。
レコードの初期値ではありませんが、レコード追加画面表示イベントを用いて、上記のAPIで取得しフィールドを更新してあげることで、アプリのフィールドへの反映が可能になると思います。環境によって数秒程度のタイムラグが発生するかもしれませんが、更新するフィールドを編集不可にしておけば、あまり違和感はないのかなと思います。
検証したサンプルを載せておきます。
動作確認はしていますが、コーディングについては勉強中のため、もっと良い書き方があるかもしれません。
なお、緯度、経度という文字列1行フィールドに対して更新しています。
(function () {
'use strict';
kintone.events.on('app.record.create.show', function (event) {
if (navigator.geolocation) { // ブラウザーが位置情報に対応する場合のみ処理
new Promise(function(resolve, reject) {
navigator.geolocation.getCurrentPosition(resolve);
})
.then(function(position) {
// レコードにデータ更新+編集不可
// レコード追加イベントはPromiseリターン非対応のため、kintone.app.record.get/set
var record = kintone.app.record.get();
record['record']['緯度']['value'] = position.coords.latitude;
record['record']['経度']['value'] = position.coords.longitude;
record['record']['緯度']['disabled'] = true;
record['record']['経度']['disabled'] = true;
kintone.app.record.set(record);
})
.catch(function(err) {
console.log(err.message);
var record = kintone.app.record.get();
record['record']['緯度']['disabled'] = true;
record['record']['経度']['disabled'] = true;
kintone.app.record.set(record);
});
}
else {
window.alert('このブラウザーは位置情報取得に対応していません!');
}
});
})();