Geolication API を使用して緯度、経度の取得はできたのですが、その緯度、経度を数値フィールドにセットができません。取得のタイミングと数値フィールドのタイミングが合わないような気がしていますが、どう直せばいいのか、分かりません。
(() => {
'use strict';
const ido=0;
const keido=0;
function getPosition() {
navigator.geolocation.getCurrentPosition(
function(position) {
const ido = position.coords.latitude;
const keido = position.coords.longitude;
},
// 取得失敗のロジックは省略
);
}
kintone.events.on(['app.record.create.show', 'app.record.edit.show'], event => {
const sp = kintone.app.record.getSpaceElement('GPS');
const btn = document.createElement('button');
btn.textContent='GPS取得';
sp.appendChild(btn);
btn.onclick=()=>{
alert('プッシュ');
const ido=0;
const keido=0;
getPosition();
}
event.record.緯度.value = ido;
event.record.経度.value = keido;
return event;
});
})();
先ほどのスクリプトを単純にしてみました。
record.緯度.value , record.経度.value には値が入っているのに、画面には表示されません。
(() => {
'use strict';
const ido=0;
const keido=0;
kintone.events.on(['app.record.create.show', 'app.record.edit.show'], event => {
const record = event.record;
const sp = kintone.app.record.getSpaceElement('GPS');
const btn = document.createElement('button');
btn.textContent='GPS取得';
sp.appendChild(btn);
btn.onclick=()=>{
alert('プッシュ');
navigator.geolocation.getCurrentPosition(function(position) {
const ido = position.coords.latitude;
const keido = position.coords.longitude;
record.緯度.value = ido;
record.経度.value = keido;
})
}
return event;
});
})();
以下のように変更したら、更新されました。
let body1 = {
'app':xxx,
'query':`緯度 in("${event.record.緯度.value}")`
};
let body2 = {
'app':xxx,
'query':`経度 in("${event.record.経度.value}")`
};
kintone.api('/k/v1/records','GET',body1,(resp)=>{
let obj = kintone.app.record.get();
obj.record.緯度.value = ido;
kintone.app.record.set(obj);
});
kintone.api('/k/v1/records','GET',body2,(resp)=>{
let obj = kintone.app.record.get();
obj.record.経度.value = keido;
kintone.app.record.set(obj);
});
system
(system)
Closed
4
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。