1.実現したい事
スマートホンから現場の住所や地図をFormBrigeを利用して自動登録させたい。
加えて写真を手動登録し、kintoneに反映後、Kviewerで閲覧したい。
現状はFormBrigeとkintoneにJSを登録させて検証しています。
下記の操作をする事で目的はクリアできますが、kintoneで位置情報から住所情報を取得(登録)をしないとKviwerでは住所を確認できません。
FormBrigeで住所まで所得してkintoneに登録させることは可能でしょうか?
FormBrigeのみで完結させるコードや手法があればご教示お願いいたします。
現状の操作:FormBrigeの登録時に自動で位置情報と地図のリンク情報が入力され、写真を撮影追加し登録(回答)します。
その後、kintoneで編集画面を表示させ、位置情報が入力されている事を確認し「保存ボタン」を押すと住所が自動登録されます。
その後、kviwerで、地図リンク、住所、現場写真を確認します。
2.試したコード
①FormBrigeコード
(function() {
“use strict”;
//DOM生成後イベント発火
fb.events.form.mounted = [function (state) {
//geolocation宣言
navigator.geolocation.getCurrentPosition(location);
function location(position) {
//緯度を取得し、フォームに記載
state.record.location_lat.value = position.coords.latitude;
//経度を取得し、フォームに記載
state.record.location_long.value = position.coords.longitude;
//URL生成
state.record.location_link.value = “https://www.google.co.jp/maps?q=” + position.coords.latitude + “,” + position.coords.longitude;
};
return state;
}];
})();
②kintoneコード
(function () {
“use strict”;
// API キー
var api_key = “API キー”;
// ヘッダに要素を追加
var head = document.getElementsByTagName(“head”)[0];
var script = document.createElement(“script”);
script.type = “text/javascript”;
script.src = “https://maps.googleapis.com/maps/api/js?key=” + api_key;
head.appendChild(script);
// レコード追加・編集画面の保存実行前イベント
kintone.events.on([“app.record.edit.submit”, “app.record.create.submit”], function (event) {
// 緯度・経度の指定
var request = {
“location”: {
“lat”: parseFloat(event.record.location_lat.value),
“lng”: parseFloat(event.record.location_long.value)
}
};
return new Promise(function (resolve, reject) {
// リバースジオコーディングの実行
var geocoder = new google.maps.Geocoder();
geocoder.geocode(request, function (results, status) {
if (status === “OK”) {
if (results[0]) {
// 住所を取得できた
event.record.addressOutput.value = results[0].formatted_address;
} else {
// 住所を取得できなかった
event.error = “住所を取得できませんでした。”;
};
} else {
// エラーが発生した
event.error = “エラーが発生しました。:” + status;
};
resolve(event);
});
});
});
})();