みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
よろしくお願いいたします。
過去の書き込みを読んでもなかなか解決できなくて困っております。
使用しているFilemakerのバージョンは14です。
FilemakerGoを使って現場で座標の修正を行いたく
次のようなものを作っております。
1.Webビューアにjavascriptで地理院マップを表示
2.Filemekerのデータから緯度経度を取得し、ピン表示
3.現地で確認したときに位置がずれている場合、正しい位置を
タップして座標を取得
4.登録済みデータの緯度経度を変更
1.~3.まではできたのですが、
ネットで公開されている情報を参考に作成していますが、
タップして取得した緯度経度をFilemakerのフィールドに
書き込む方法がわかりません。
アドバイスをいただきたく書き込みさせていただきました。
どうぞよろしくお願いいたします。
以下、作成途中の内容です。
"data:text/html,
<!DOCTYPE html>
<html>
<head>
<link rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.3.4/dist/leaflet.css\" />
<script src=\"https://unpkg.com/leaflet@1.3.4/dist/leaflet.js\"></script>
<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">
</head>
<style>
body {
padding: 0;
margin: 0;
}
html, body, #map {
height: 100%;
width: 100vw;
}
</style>
<body>
<div id=\"map\"></div>
<script>
var cyberjapandata = L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {
maxZoom: 18,
attribution: '© <a href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\">国土地理院</a>',
}),
openstreetmap = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">OpenStreetMap</a>'
});
var baseMaps = {
\"国土地理院\": cyberjapandata,
\"OpenStreetMap\": openstreetmap
};
// 地図を作成する¶
var mymap = L.map('map', {layers: [cyberjapandata]});
L.control.layers(baseMaps).addTo(mymap);
// 地図の中心座標とズームレベルを設定する¶
mymap.setView([" & 諸元データ::北緯 & "," & 諸元データ::東経 & "], 16);
//マーカー&ポップアップ追加¶
var marker = L.marker([" & 諸元データ::北緯 & "," & 諸元データ::東経 & "])
.bindPopup(\"<b>橋長 " & 諸元データ::橋長_m_ & "m</b>\")
.addTo(mymap);
//緯度、経度の情報をポップアップ表示¶
var fmData;
mymap.on('click', function(e) {
var latitude = (Math.round(e.latlng.lat * 1000000)) /1000000;
var longitude = (Math.round(e.latlng.lng * 1000000)) /1000000;
alert(\"緯度:\" + latitude + \" , \" + \"経度:\" + longitude);
});
</script>
</body>
</html>"
したいこと
緯度、経度の情報をポップアップ表示した
latitude と longitude をフィールドに入れたいのです。
こんな感じで。
window.location = 'fmp://$/{ファイル名}?script={スクリプト名}&$latitude=' + latitude + '&$longitude=' + longitude;
以下が、参考になりそうな。
Webビューアからfunction save() {window.location = 'fmp://$・・で値を取得する方法
https://fm-aid.com/bbs2/viewtopic.php?id=8313
URL を使用してファイル内のスクリプトを実行するには、次の操作を行います。
https://fmhelp.filemaker.com/help/14/fm … tml#697245
Offline
こんな感じで。
window.location = 'fmp://$/{ファイル名}?script={スクリプト名}&$latitude=' + latitude + '&$longitude=' + longitude;
以下が、参考になりそうな。
Webビューアからfunction save() {window.location = 'fmp://$・・で値を取得する方法
https://fm-aid.com/bbs2/viewtopic.php?id=8313URL を使用してファイル内のスクリプトを実行するには、次の操作を行います。
https://fmhelp.filemaker.com/help/14/fm … tml#697245
さっそくのアドバイスありがとうございます。
次のとおり修正してみましたが、受け渡しができていないようです。
ちなみにfilemaker側のスクリプトjavadata は、
貼り付け[選択;スタイルなし;諸元データ::Location]
のみ記述しております。
<script>
var latitude; ←グローバル変数にしました
var longitude;←グローバル変数にしました
var cyberjapandata = L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {
maxZoom: 18,
attribution: '© <a href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\">国土地理院</a>',
}),
openstreetmap = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">OpenStreetMap</a>'
});
var baseMaps = {
\"国土地理院\": cyberjapandata,
\"OpenStreetMap\": openstreetmap
};
// 地図を作成する¶
var mymap = L.map('map', {layers: [cyberjapandata]});
L.control.layers(baseMaps).addTo(mymap);
// 地図の中心座標とズームレベルを設定する¶
mymap.setView([" & 諸元データ::北緯 & "," & 諸元データ::東経 & "], 16);
//マーカー&ポップアップ追加¶
var marker = L.marker([" & 諸元データ::北緯 & "," & 諸元データ::東経 & "])
.bindPopup(\"<b>橋長 " & 諸元データ::橋長_m_ & "m</b>\")
.addTo(mymap);
//緯度、経度の情報をポップアップ表示¶
mymap.on('click', function(e) {
latitude = (Math.round(e.latlng.lat * 1000000)) /1000000;
longitude = (Math.round(e.latlng.lng * 1000000)) /1000000;
alert(\"緯度:\" + latitude + \" , \" + \"経度:\" + longitude);
});
↓追加しました
function save() {
window.location = 'fmp://$/" & Get ( ファイル名 ) & "?script=javadata&$latitude=' + latitude + '&$longitude=' + longitude;
}
</script>
ちなみに
mymap.on('click', function(e) {
latitude = (Math.round(e.latlng.lat * 1000000)) /1000000;
longitude = (Math.round(e.latlng.lng * 1000000)) /1000000;
alert(\"緯度:\" + latitude + \" , \" + \"経度:\" + longitude);
window.location = 'fmp://$/" & Get ( ファイル名 ) & "?script=javadata&$latitude=' + latitude + '&$longitude=' + longitude;
});
と記述すると、クリップボードに記憶されているデータが入るのですが
緯度経度とは関係なくコピーコマンドで取得したものでした。
おそらく緯度経度が取得できていないのだと思います。
参考に教えてくださったところを読んでも理解できず、途方に暮れている状態です。
「スクリプト:javadata」の記述は、以下のようにします。
フィールド設定 [ 目的のフィールド01 ; $latitude]
フィールド設定 [ 目的のフィールド02 ; $longitude]
グローバル変数にしなくても大丈夫です。
mymap.on('click', function(e) {
var latitude = (Math.round(e.latlng.lat * 1000000)) /1000000;
var longitude = (Math.round(e.latlng.lng * 1000000)) /1000000;
alert(\"緯度:\" + latitude + \" , \" + \"経度:\" + longitude);
window.location = 'fmp://$/" & Get ( ファイル名 ) & "?script=javadata&$latitude=' + latitude + '&$longitude=' + longitude;
});
Offline
「スクリプト:javadata」の記述は、以下のようにします。
フィールド設定 [ 目的のフィールド01 ; $latitude]
フィールド設定 [ 目的のフィールド02 ; $longitude]グローバル変数にしなくても大丈夫です。
mymap.on('click', function(e) {
var latitude = (Math.round(e.latlng.lat * 1000000)) /1000000;
var longitude = (Math.round(e.latlng.lng * 1000000)) /1000000;
alert(\"緯度:\" + latitude + \" , \" + \"経度:\" + longitude);
window.location = 'fmp://$/" & Get ( ファイル名 ) & "?script=javadata&$latitude=' + latitude + '&$longitude=' + longitude;
});
無事取得することができました。
感謝でいっぱいです。
月曜からずっと試行錯誤してたので明日は
やっと先にすすめそうです。
スクリプトへの渡し方、たいへん勉強になりました。
qb_dp様から教えていただいたこと、今後も活用させていただきます。
本当にありがとうございました。
[ Generated in 0.006 seconds, 8 queries executed - Memory usage: 542.27 KiB (Peak: 563.18 KiB) ]