みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
himadanee さん
ありがとうございます。
koko009 さん
ご指導ありがとうございます。
フイールド「座標F」を追加し(テキスト、グローバルに)、GoogleMAPに表示された地図の座標値をcopy、「座標F」に貼りつけ、
↑の#25でご指示のコードをスクリプトに貼りつけ、36.6792919844,137.271466036(プライバシーの点で下4桁削除)
スクリプト実行で、‥‥繰り返し、スクリプト実行するのですが地図が起動しません。(1回目はYahooMAP起動したのですが、全く違った場所の表示でした)。
Offline
この座標36.6792919844,137.271466036をM17で試した結果、こちらのブラウザー(Mozilla Firefox)て表示されたYahoo地図は何度繰り返しても
〒930-0934 富山県富山市藤の木台2丁目
界隈を示すものでした。
因みにM17のデータベースデザインレポートでは
URL を開く [ "https://map.yahoo.co.jp/place?lat=" & GetValue ( Substitute ( 地図::表示座標; "," ; ¶);1) &"&lon="& GetValue ( Substitute ( 地図::表示座標 ; "," ; ¶);2) &"&zoom=16&maptype=basic" ] [ ダイアログなし ]
になっています。
こちらのエッジにFirefoxで表示されているURLをコピペしたところ本当に表示されないですね。
もしかしたら、ヘルプにある
https://support.yahoo-net.jp/PccMapWeb/ … H000013131
Yahoo!地図では、WebGLを利用しています。機能をお使いの際は、WebGLを有効にしてください。
が関係しているのでは、エッジは使ったことないので設定の方法すら分からないので試しようがないので悪しからず
koko009 さん
ご指導ありがとうございます。
度々の試行、お手数をおかけしています。#27のYahooMAPでの地図地点表示はほぼ合っています。
他の地点座標でも正確に表示されるのですか?。
だとすると、ブラウザーの違いなのでしょうか?。
当方は、Win10/MS-EdgeでYahooMAPの推奨ブラウザーとなっていますね。仰る様に「WebGLを何らかの理由で無効にしている」については、私も確認方法分かりません。
こんな事言って良いのかなぁ?、YahooMAPを表示すると左上近くに「キーワード入力」窓がありますね、ここに住所を入れると正確な地図が表示(地点値ポイント)されますね。
FM側からここに住所1/2を”投げ込み” 地点表示させる手があれば良いのだが‥‥。あるいはこの逆?。
Offline
>他の地点座標でも正確に表示されるのですか?。
別に他の座標でも表示は問題はありません。
>FM側からここに住所1/2を”投げ込み” 地点表示させる手があれば良いのだが
昔は出来たが、今はyahooでは出来ないが他社のmapAPIでは登録すれば可能・・・但し有料でjavascriptの知識が必要です。
だからweb ビューアのmapとして、私はleafletでopenstreetmapと地理院タイルを使っています。別に店舗情報等は必要がないので地図としてはこれで問題はありませんし、必要があればGoogleMAPに切り替えて使うようにしています。
koko009 さん
お手数おかけしています。
YahooMAP表示されるようになりました。理由は分かりません、いろいろ試行していたところ表示されました。
「座標F」フイールドにGoogleMAPからの座標値をコピペしたところ、YahooMAP用のスクリプト(クリック)で正確に表示されるようになりました。各レコードでも確認。
‥‥「座標F」フイールドに、住所座標値(緯度経度)が自動で取り込まれれば、後はスクリプトの実行ですね。
「座標F」フイールドに取り込む為の計算式はどれになりますでしょうか?。
Offline
そちらの状況がよく分かりませんが
>「座標F」フイールドに取り込む為の計算式はどれになりますでしょうか?。
#14のスクリプトステップを下記のように書き換えるだけです
URL から挿入 [ $$yb; "https://map.yahooapis.jp/geocode/cont/V … ID>&query=" & 名刺管理簿::住所 & 名刺管理簿::住所2] [ 選択; ダイアログなし ]
フィールド設定 [ 名刺管理簿i::座標F; Let([lat=GetValue ( Substitute (JSONGetElement ( $$yb ; "Feature[0].Geometry.Coordinates") ; "," ; ¶ );2);
lag=GetValue ( Substitute (JSONGetElement ( $$yb ; "Feature[0].Geometry.Coordinates") ; "," ; ¶ );1)];lat & "," & lag) ]
しかしその時点で肝心のこのステップを理解してもらえないので#20で「URL から挿入」ステップを次のように説明したつもりですが
「URL から挿入」のスクリプト設定の
「ターゲット指定」で変数を設定(今回の場合出力されたJISONの値を変数として納めるため)・・・今回は後のこと考えグローバル変数に設定しています。
「URL を指定」でURLに"https://map.yahooapis.jp/geocode/cont/V … ID>&query=" & 名刺管理簿::住所 & 名刺管理簿::住所2
とエンコード欄チェック
だけ。
それが理解してもらい得ないとすれば・・・ここのどのステップが理解できないお教え下さい。
koko009 さん
お手数おかけします、誠に申し訳ありません、本当に理解できていないです(-_-;)。
1.フイールドへの記載内容は?
>「座標F」フイールドに記載する計算式は?==>これは、FMのファイル-管理-データーベース==>座標Fフイールドのオプション:入力値の自動化タブの計算:指定(E)に記載するのでしょうか?。
2.スクリプトの作成内容=名称「MAP座標取得」スクリプトで良いのかな?。
座標値を取得し、「座標F」フイールドに記入(表示)させる為のコードは?==>”#14のスクリプトステップを下記のように書き換えるだけです” なのでしょうか?。
※取得した座標値からYahooMAP表示させるスクリプト内容は次の通りです。
"https://map.yahoo.co.jp/place?lat=" &
GetValue ( Substitute ( 名刺管理簿::座標F ; "," ; ¶);1)
&"&lon="&
GetValue ( Substitute ( 名刺管理簿::座標F ; "," ; ¶);2)
&"&zoom=16&maptype=basic"
なお恐縮ながら、座標値の取得はGoogleMAPにはなら無いでしょうか?。==>ご指導に従いGoogleMAPで表示された表示マーカの座標を手動にてコピペして「座標F」入れていましたので‥‥。
Offline
>なお恐縮ながら、座標値の取得はGoogleMAPにはなら無いでしょうか?。
今使われているGoogleMAPは常にコードが変化するため自動的に取得することは出来ません、そのため各社が提供するAPIを利用すれば提供される情報が一定のルールの基で作成されているから自動取得は可能となる。
ましてFMからGoogleMAPの動きを制御する方法が無いのでこの手作業を自動化することは出来ないと思います。
#31で
>「座標F」フイールドに取り込む為の計算式はどれになりますでしょうか?。
との質問に対し計算式はありませんのでスクリプトで取り込むしか無い事を理解してください。
#32は「座標F」フイールド(但し前回書き忘れましたがグローバルフイールドではありません)にまず座標を書き込むスクリプトです。
質問1は何故そのような解釈のなるのか理解できませんが計算式で可能だと思われているのなら理解できます。・・・レコード作成時に自動的に書き込むにはスクリプトトリガを使えば出来ないことはないと思いますが運用的にどうかと思います。
故に#32で使う「座標F」フイールドはただのテキストフィールドです。
「URL から挿入」スクリプトでyahooのジオコーダAPIを使い住所情報を基に座標情報(JISON形式)を取得し変数($$yb)に格納したものを「フィールド設定」スクリプトで緯度経度の形にして書き込むようにしています。
質問2
>スクリプトの作成内容=名称「MAP座標取得」スクリプトで良いのかな?。
作成者分かればいいだけです。
>座標値を取得し、「座標F」フイールドに記入(表示)させる為のコードは?==>”#14のスクリプトステップを下記のように書き換えるだけです” なのでしょうか?。
同じフィールド対し、ここの部分と質問1の「座標F」フイールドに記載する計算式は?では整合性に欠けると思いますが
さらに何故ここで「URL を開く」スクリプトで使うための計算式が出てくるのか理解できません、先に記した「フィールド設定」スクリプトで変数に格納されているJISON形式の値から緯度経度の形にする作業を記しているだけなのに
単純にhimadaneeが書かれたように
住所から経緯度取得(URLから挿入)
それを指定して地図を表示(URLを開く)
の2段階が必要なのは変わらないのでは。
経緯度は住所が決まればずっと同じなので、住所フィールド変更時にフィールドに保存しておけば手間が減るでしょう。
の第一段階だけです。
参考までジオコード云々に関するサイトとして
https://www.zenrin-datacom.net/solution … commentary
他で
大きな間違いを犯していたyahooのジオコーダAPIに下記の2つあるのをど忘れしていた、今回使っていたのはコンテンツジオコーダAPIです。何がどう違うのか詳しく分からない正確な住所なら問題なく座標が出るのでそのままにしておいたのだろう。
コンテンツジオコーダAPI・・"https://map.yahooapis.jp/geocode/cont/V1/contentsGeoCoder?output=json&appid=<あなたのアプリケーションID>&query=" &" & 名刺管理簿::住所 & 名刺管理簿::住所2
Yahoo!ジオコーダAPI・・"https://map.yahooapis.jp/geocode/V1/geoCoder?output=json&appid=<あなたのアプリケーションID>&query=" &" & 名刺管理簿::住所 & 名刺管理簿::住所2
使うときは「Yahoo!ジオコーダAPI」の方が無難かと
koko009 さん
お手数おかけします。
Yahoo!ジオコーダAPIに変更しました。
分からない事は次の通りです。
1.URLから挿入で、ターゲットの指定があります、名刺管理簿::座標Fでよろしいでしょうか?。
2.フイールド指定で、①ここでもターゲット選択指定がありますが、同じ名刺管理簿::座標Fでよろしいでしょうか?。
②計算式で、 [ 名刺管理簿::座標F; Let([lat=GetValue ( Substitute (JSONGetElement ( $$yb ; "Feature[0].Geometry.Coordinates") ; "," ; ¶ );2);
lag=GetValue ( Substitute (JSONGetElement ( $$yb ; "Feature[0].Geometry.Coordinates") ; "," ; ¶ );1)];lat & "," & lag) ]
‥‥とするのですが、「数字、テキスト、フイールド名または(、)を入れろ」のエラーが出ます。
Offline
追伸です、
1.「 $$yb」で始まっていますが、これはどの様な内容でしょうか?。エラーが出ます。
2.[、]は?、計算式でしょうか?。一覧に見当たりませんが‥‥。
Offline
>1.URLから挿入で、ターゲットの指定があります、名刺管理簿::座標Fでよろしいでしょうか?。
変数を選択し変数名を取りあえず「$$yb」にしてOKです。
>2.フイールド指定で、①ここでもターゲット選択指定がありますが、同じ名刺管理簿::座標Fでよろしいでしょうか?。
もし、「フィール設定」のターゲットフィールドの指定のことでしたら
一覧の「座標F」を選択してOKです
>エラーが出ます。
「フィール設定」の計算式の事だと思うので下記の式を入れてください。
Let([lat=GetValue ( Substitute (JSONGetElement ( $$yb ; "Feature[0].Geometry.Coordinates") ; "," ; ¶ );2);lag=GetValue ( Substitute (JSONGetElement ( $$yb ; "Feature[0].Geometry.Coordinates") ; "," ; ¶ );1)];lat & "," & lag)
ちなみに
このようにして作成されたスクリプトをデータデザインレポートでhtmlとして出力した結果(こちらで使っているものですので内容が違う)を何回も紹介して来ましたが逆に分かりづらい事になったのですかね。
URL から挿入 [ $$yb; "https://map.yahooapis.jp/geocode/cont/V1/contentsGeoCoder?output=json&appid=qqqwwwwE-&query=" & 地図::住所 ] [ 選択; ダイアログなし ]
フィールド設定 [ 地図::表示座標; Let([lat=GetValue ( Substitute (JSONGetElement ( $$yb ; "Feature[0].Geometry.Coordinates") ; "," ; ¶ );2);lag=GetValue ( Substitute (JSONGetElement ( $$yb ; "Feature[0].Geometry.Coordinates") ; "," ; ¶ );1)];lat & "," & lag) ]koko009 さん
お手数おかけします、まだ理解できていないです(-_-;)。
「座標F」フイールドに「 Column 1,? * Line 1」が返ります。座標値ではない。
MAP座標値取得スクリプトについてまとめてみました。
1. レイアウト切り替え[「名刺管理簿」;アニメなし]
2. URLから挿入[選択;ダイアログあり:オン;ターゲット:名刺管理簿::座標F;
※この後、ダイアログが開き、
ターゲットに「レ」を入れ、指定にて「名刺管理簿::座標F、繰り返し=1」とする。
URLを指定で、
[$$yb; "https://map.yahooapis.jp/geocode/cont/V … ID>&query=" & 名刺管理簿::住所& 名刺管理簿::住所2] [ 選択; ダイアログなし ]
‥‥を記述するも、$$ybが反転色となり、エラー。$$yb-を削除し住所2以降の] [ 選択; ダイアログなし ]も削除しOK(通過)となった。
※[、]の意味は?。
3. フイールド設定[名刺管理簿::座標F;
※ターゲットフイールドの指定に「レ」を入れ、計算結果の指定で、
Let([lat=GetValue ( Substitute (JSONGetElement ( $$yb ; "Feature[0].Geometry.Coordinates") ; "," ; ¶ );2);lag=GetValue ( Substitute (JSONGetElement ( $$yb ; "Feature[0].Geometry.Coordinates") ; "," ; ¶ );1)];lat & "," & lag)
※>「フィール設定」の計算式の事だと思うので‥‥と記されていますが、フイールド指定なのでは?。フイールとは?。
記述完了し、すべて保存としました。
この結果「座標F」フイールドに「 Column 1,? * Line 1」が返ります。座標値ではない。
何処で間違っているのでしょうか?。ご教示ください。
Offline
2. URLから挿入[選択;ダイアログあり:オン;ターゲット:名刺管理簿::座標F;
※この後、ダイアログが開き、
ターゲットに「レ」を入れ、指定にて「名刺管理簿::座標F、繰り返し=1」とする。
まずここが間違っている
何回も言っていますがターゲットの指定は変数です、何故「名刺管理簿::座標F、繰り返し=1」とするのか理解できません
このステップをきちんとしないと先に進めません。
再度確認しますが、使っているにはFM16で間違いないでしょうか、もしこれより前のバージョンでは確か「URL を挿入」では変数を使えないかと思いますので
koko009 さん
VersionはFM18でした(いつの間にVer Upしたのか私には不明ですが)、済みいません。
>何回も言っていますがターゲットの指定は変数です、何故「名刺管理簿::座標F、繰り返し=1」とするのか理解できません
このステップをきちんとしないと先に進めません。
すみません。ターゲットダイアログの規定値が〇フイールドと〇変数があり、繰り返し欄が「1」となっていたので、
‥‥ここでは変数に・(〇ポチ)とし、繰り返しの欄は「1」を消せばいいのですね。変数欄は何んと記すのでしょうか?。
空欄では先に進めません「ok」が押せません。記憶が悪く申し訳ありません。この部分は#幾つに記載されていましたでしょうか?。
Last edited by Horicchii (2023-02-24 22:22:49)
Offline
追伸
お手数をおかけします。
ターゲットダイアログ
変数を選び、欄に「$$yb」を記入→OKが押せました。
[$$yb:"http://‥‥略 で[が反転色となり「数字、テキスト、フイールド名または「(」を入れてください」のエラーが出ます。
キャンセルを押し、戻ると繰り返し欄に「1」が入っています。
先に進めません。
Offline
追伸です。
次のステップ試行です。
[$$yb:"http://‥‥略 で[が反転色となり「数字、テキスト、フイールド名または「(」を入れてください」のエラーが出ます。
キャンセルを押し、戻ると繰り返し欄に「1」が入っています。
先に進めませんでした。
よって、[$$yb:を消し、"https://map.yahooapis.jp/geocode/V1/geoCoder?output=json&appid=<相当長い文字列のアプリケーションID>& query= & 名刺管理簿::Map座標" としたところ、OKとなり進めました。
ただ、座標F欄には今度は「,」が返って来ます。※旋回は「 Column 1,? * Line 1」が返って来ていました。
Offline
追伸です。
↑#43の通りなのですが、間違いありました。query=" & 名刺管理簿::住所& 名刺管理簿::住所2] [ 選択; ダイアログなし ]の部分です。
query=" & 名刺管理簿::住所& 名刺管理簿::住所2”としました。
「] [ 選択; ダイアログなし ]」部分は消しています。→消さないと先に進めない、OKにならないので。
ここまでは、前段部分ですよね、後段部分:フイールド設定[名刺管理簿::座標F; で間違いがあるのでしょうか?。
※フイールド名「座標F」は明確にする為「Map座標」に変更しています。
それでも、座標フイールドには「,」しか返りません。
お忙しいところ申し訳ありません。お手上げです(@_@;)、もう少し?ご指導願えませんでしょうか?。
Offline
度々の追伸で恐縮です。
忘れていました、※気にはなっていたのですが、
とエンコード欄チェック==>エンコード欄?、見当たらないのですが、これはどの様にすれば?。
Offline
#42で
>ターゲットダイアログ
>変数を選び、欄に「$$yb」を記入→OKが押せました。
>[$$yb:"http://‥‥略 で[が反転色となり「数字、テキスト、フイールド名または「(」を入れてください」のエラーが出ます。
>キャンセルを押し、戻ると繰り返し欄に「1」が入っています
の状況がよく理解できないのでURL云々を挿入する事は一度忘れてください。
まず最初に新規スクリプトを作りから始めましょう
1.新規スクリプトを選択しスクリプトステップが何もない状態でスクリプト名を付けてください。仮に「ジオコード」としますか
2.右側のステップ欄から「URL から挿入」を選択してクリックすれば、このステップが付け加わりダイアログが出ますがここでは敢えてなにもしないで登録するためそのままでどこかクリックしてください。
3.同じように右側のステップ欄から「フィールド設定」を選択してクリックここでもなにもしない登録するためそのままでどこかクリックしてください。
4.スクリプトワークスペースを閉じるでこのスクリプトを保存してください。
これで準備完了です。
再度スクリプトワークスペースから先程保存した「ジオコード」スクリプトを選択してください
「1 URL から挿入・・・」にカーソルを持って行くと右端に○状の物が出ますのでそれをクリックすればダイアログが出ます。
そこで「ターゲット」の指定で表示されたダイアログに中の変数にチェックして変数名として「$$yb」として書き込みOKボタンで前のダイアログに戻ります。
ここまで再度挑戦して問題がなけらば
戻ったダイアログの「URL 指定」の指定で「URL から挿入」オプションのダイアログが出るので右側にある指定を押し計算式指定欄を表示させ下記の式を記入してください。
"https://map.yahooapis.jp/geocode/V1/geo … ID>&query=" &" & 名刺管理簿::住所 & 名刺管理簿::住所2
OKを押すと計算式欄が問題がなければ閉じられます。次にオプション欄のOKを押しオプション指定を完了します。適当な場所をクリックして「URL から挿入」ステップの終了
ここまで問題がないとして次のステップに移ります
「2 フィールド設定・・・」にカーソルを持って行くと右端に○状の物が出ますのでそれをクリックすればダイアログが出ます。
ターゲットフィールドの指定を選択すればフィード名の一覧が出ますので「座標F」を選択しOKボタンを押し戻ります
次に計算結果の指定を選択すれば計算式の指定欄が出ますので下記の式を記入してください
Let([lat=GetValue ( Substitute (JSONGetElement ( $$yb ; "Feature[0].Geometry.Coordinates") ; "," ; ¶ );2);lag=GetValue ( Substitute (JSONGetElement ( $$yb ; "Feature[0].Geometry.Coordinates") ; "," ; ¶ );1)];lat & "," & lag)
OKを押すと計算式欄が問題がなければ閉じられます。
適当な場所をクリックして「フィールド設定」ステップの終了
最後に
スクリプトワークスペースを閉じるでこの変更したスクリプトを保存してください。
以上ですが、問題生じたときはそのステップ以降の余計な作業をしないで質問をしてください。後の作業の結果生じた問題はどこが原因か分からないのでこちらが想像するにも限界がありますから・・・
koko009 さん
ありがとうございます。遅くなり申し訳ありません。ご指示の通り、
URL から挿入で、
"https://map.yahooapis.jp/geocode/V1/gMA … ID>&query=" &" & 名刺管理簿::住所 & 名刺管理簿::住所2
※頭の [ $$yb; と 終わりの ] [ 選択; ダイアログなし ]をcut。
フィールド設定
ターゲット指定は [ 名刺管理簿::MAP座標]とし、
Let([lat=GetValue ( Substitute (JSONGetElement ( $$yb ; "Feature[0].Geometry.Coordinates") ; "," ; ¶ );2);lag=GetValue ( Substitute (JSONGetElement ( $$yb ; "Feature[0].Geometry.Coordinates") ; "," ; ¶ );1)];lat & "," & lag) ]
この内容で、全部分通過できました。
[ジオコード]スクリプトを実行した結果、
MAP座標には[,]カンマしか返りません。
なお、繰り返し欄には[1]が自動的に入っています。※1を消したのですが、振り返ると1が入っています。
Offline
取得できてないのでしょう。変数値を確認です。
フィールドや変数の繰り返しは、繰り返しでない場合は1になるので問題ないです。
>MAP座標には[,]カンマしか返りません。
「フィールド設定」ステップは正常に動作をしているので、「URL から挿入」ステップの問題ですから
まず変数「$$yb]の値としJSONが格納されているか確認します。
面倒でも新たな新規スクリプトを作り名前は何でもかまいません確認が終われば削除しますので
そこに「フィールド設定」ステップを加え
ターゲットフィールドの指定 [ MAP座標]とし、計算式欄に
$$yb
を記入して
これでスクリプト保存します。
確認のため
[ジオコード]スクリプトを実行
次に後で作った確認用スクリプトを実行
[ MAP座標]フィールドに何らかのテキストが出力されるはずですから
それをお教えください。
多分、下記の作業の問題だと思いますが一応お願いします。
>"https://map.yahooapis.jp/geocode/V1/gMA … ID>&query=" &" & 名刺管理簿::住所 & 名刺管理簿::住所2
>※頭の [ $$yb; と 終わりの ] [ 選択; ダイアログなし ]をcut。
何故cut作業で書き込むのか分かりませんが、私の書いたURLをコピペし「<・・ID>」の部分を「あなたのID」で書き換えるだけです。
Idを間違えた場合は
{"Error":{"Message":"Your Request was Forbidden"}}
とでるみたいに
[ Generated in 0.011 seconds, 9 queries executed - Memory usage: 674.07 KiB (Peak: 722.98 KiB) ]