掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
kml形式のファイルを読み込むには? (ID:48635)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
「TWebBrowserで表示中の地理院地図(電子国土Web)にkmlファイルを読み込ませ、地図上に図形を表示させる」 これを実際に地理院地図で行うと場合、右上にある[機能]→[ツール]→[作図・ファイル]で当該のモードレスダイアログを出し、 [ファイルから読み込み]ボタンを押して… (以下省略) 上記をDOM操作で置き換えれば…思ったんですが、途中でファイルオープンダイアログが出るためそこはDOM操作が不能、なのでボツ。 参考: 右上にある[機能]メニューを展開する document.getElementsByClassName('leaflet-top leaflet-right')[0].getElementsByClassName('menu_btn')[0].click(); 次に、「地図上にkmlファイルをドロップしても可」とのことなので、それを擬似的に(ドラッグ&ドロップのエミュレートを) 行えば良いのでは??とか思ったんですが、かなりのレア技術なのでハードル高過ぎでボツ。 --------------------------------------------------------------------------------------------------- 仕方ないので、サイトのスクリプトのソース(https://github.com/gsi-cyberjapan/gsimaps にあります)を眺めて みたところ、使えるメソッドを発見しました。これは行けるんじゃないかと思います。 GSI.GLOBALS.sakuzuList.loadFromText('《ここに、kmlファイルの中身を置く》', '《ファイル名》'); ※ファイル名は「作図・ファイル」ダイアログ内でレイヤ名として使われるだけなので、実際と異なっていてもかまいません。 ファイルを直接読み込ませるのは File API とか大変そうなので、読み込みはDelphiで行い、その中身を文字列として送り込む戦略です。 参考: 以下を地理院地図上で(例えばFirefoxならスクラッチパッドなどを用いて)実行すると、図形が描画されます。 GSI.GLOBALS.sakuzuList.loadFromText('<?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://www.opengis.net/kml/2.2"><Document><Style id="LineStyle1"> <LineStyle> <color>c90099ff</color> <width>10</width> </LineStyle></Style><Style id="PolyStyle2"> <IconStyle> <Icon> <href>https://maps.gsi.go.jp/portal/sys/v4/symbols/080.png</href> </Icon> <scale>2</scale> </IconStyle></Style><Placemark><styleUrl>#LineStyle1</styleUrl><LineString><coordinates>141.52587890625,34.92197103616377 145.96435546875,37.020098201368114 145.975341796875,32.685619853722 141.514892578125,34.58799745550482</coordinates></LineString></Placemark><Placemark><styleUrl>#PolyStyle2</styleUrl><Point><coordinates>141.317138671875,34.74161249883172</coordinates></Point></Placemark></Document></kml>', 'TestFile.kml'); --------------------------------------------------------------------------------------------------- …と、ここまで引っぱっておきながら、実際にDelphiで試してはいないです。。。。 今、動かせる環境が無いもので…スミマセン。 >WebBrowser1.ExecScript(xxxxx)で、javaScriptを記述して行うのでしょうか? そうですね。でもexecScriptは以下のような感じで使います。 ※ScriptStrにメソッド全体を仕込んでおきます。 WebBrowser1.OleObject.document.parentWindow.execScript(ScriptStr); 別パターンとしては、以下のようにしても行ける…かな?? ※KMLFileTextにkmlファイルの中身を、KMLFileNameにファイル名を入れておきます。 WebBrowser1.OleObject.document.parentWindow.GSI.GLOBALS.sakuzuList.loadFromText(KMLFileText, KMLFileName); 以上、ご健闘をお祈りします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.