vb.net(Visual Studio 2017)でwebBrowserにopenLayer(v5.3.0)を使用して国土地理院地図を表示しようとしているのですがエラーが出て表示されません。原因がおわかりの方ご教示ください。
FormにButton1とWebBrowser1を配置しています。実行後、ボタンを押したらWebBrowser1に国土地理院の地図を表示したいのですが画像のようなエラーが出力されます。以下にソースをのせますのでご教示ください。
↓ソース
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'電子国土地図表示
WebBrowser1.DocumentText = TestOpenLayer()
End Sub
Private Function TestOpenLayer() As String
Dim txtHtml As String = ""
txtHtml = txtHtml & "<!doctype html>" & vbCrLf
txtHtml = txtHtml & "<html lang='ja'>" & vbCrLf
txtHtml = txtHtml & "<head>" & vbCrLf
txtHtml = txtHtml & " <meta charset='utf-8' />" & vbCrLf
txtHtml = txtHtml & " <link rel=""stylesheet"" href=""https://cdn.rawgit.com/openlayers/openlayers.git … type=""text/css"">" & vbCrLf
txtHtml = txtHtml & " <script src=""https://cdn.rawgit.com/openlayers/openlayers.git … & vbCrLf
txtHtml = txtHtml & " <script type='text/javascript'>" & vbCrLf
txtHtml = txtHtml & "var __map = null;" & vbCrLf
txtHtml = txtHtml & "var __map = null;" & vbCrLf
txtHtml = txtHtml & "function loadMap() {" & vbCrLf
txtHtml = txtHtml & " var _stdLayer = new ol.layer.Tile({" & vbCrLf
txtHtml = txtHtml & " source: new ol.source.XYZ({" & vbCrLf
txtHtml = txtHtml & " url: 'https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png'" & vbCrLf
txtHtml = txtHtml & " })" & vbCrLf
txtHtml = txtHtml & " });" & vbCrLf
txtHtml = txtHtml & " __map = new ol.Map({" & vbCrLf
txtHtml = txtHtml & " target: 'map'," & vbCrLf
txtHtml = txtHtml & " layers: [" & vbCrLf
txtHtml = txtHtml & " _stdLayer" & vbCrLf
txtHtml = txtHtml & " ]," & vbCrLf
txtHtml = txtHtml & " view: new ol.View({" & vbCrLf
txtHtml = txtHtml & " center: ol.proj.fromLonLat([139.745433, 35.658581])," & vbCrLf
txtHtml = txtHtml & " zoom: 15" & vbCrLf
txtHtml = txtHtml & " })" & vbCrLf
txtHtml = txtHtml & " });" & vbCrLf
txtHtml = txtHtml & "}" & vbCrLf
txtHtml = txtHtml & "</script>" & vbCrLf
txtHtml = txtHtml & " <style>" & vbCrLf
txtHtml = txtHtml & " #map {" & vbCrLf
txtHtml = txtHtml & " width: 600px;" & vbCrLf
txtHtml = txtHtml & " height: 400px;" & vbCrLf
txtHtml = txtHtml & " }" & vbCrLf
txtHtml = txtHtml & " </style>" & vbCrLf
txtHtml = txtHtml & "</head>" & vbCrLf
txtHtml = txtHtml & "<body onload='loadMap();'>" & vbCrLf
txtHtml = txtHtml & " <div id='map'></div>" & vbCrLf
txtHtml = txtHtml & "</body>" & vbCrLf
txtHtml = txtHtml & "</html>" & vbCrLf
TestOpenLayer = txtHtml
End Function
End Class
見にくいのですがエラーの画像添付しておきます。
①上の画像が実行後にButton1を押した際のエラーです。
このページのスクリプトでエラーが発生しました。
Url:https://cdn.rawgit.com/openlayers/openlayers.git …
②真ん中の画像がスクリプトを実行した際のエラーです。
行:11
エラー:'ol'は定義されていません。
③下の画像がデバッガーを使用してデバックをした際のエラー箇所です。
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
私が下記の実例のWebページに書かれたHTMLをmap.htmに保存し、Windows10上の下記のブラウザで表示すると全て問題ありませんでした。
https://openlayers.org/en/latest/doc/quickstart. …
・Chrome バージョン: 74.0.3729.131
・FireFox 66.0.5
・Edge
・Internet Explorer 11(以降、IE)
WebBrowserクラスはIEと似ているように思い、環境等の問題かどうかを判断するために、IEで上記と同じことを行って問題ないでしょうか?
1コ目のスナップが小さく潰れていてわからないため、エラー等の全ての内容が知りたいです。
2コ目のスナップは、多分エラーになっているスクリプトでオブジェクトolが宣言されるが、エラーで宣言されていないためにエラーになっているように思います。
最悪、WebBrowserオブジェクトのJavascriptエンジンが古いためにol.jsの内容に対応していないという場合があるかもしれません。
HTMLを上記の方法と完全に同じものにした場合に行えるならばHTMLの違いに原因があると思います。
返答ありがとうございます。
記述してなかったのですが質問する前にhtmlファイルで動作する事は確認しました。やはりWebBrowserオブジェクトの問題なのですかね?
もう少しみなさんからの返答を待ってみます。
No.2
- 回答日時:
1コ目のスナップ、確認しましたが手がかりはなさそうですねぇ。
(ラインが0になっていたりするのは、Javascriptが圧縮されていて改行コードがないためだと思います。)
WebBrowserが非対応の観点でググってみたところ、下記が気になりました。
https://docs.microsoft.com/ja-jp/dotnet/api/syst …
そういえばIEは大したエラーでなくてもエラーで止まった覚えがあります。
これはWebBrowserクラスのプロパティを設定するだけなのでやってみるとよいかもしれません。
また、実際にWebBrowserクラスが古いかもしれないという点ではやはり下記がありました。
https://htsign.tumblr.com/post/2312930541
ただ、これはだいぶ情報が古いため、今もあてはまるかはわからないです。
レジストリをいじるため注意が必要ですが、これをやってみたり、これ関する内容をググってみると何かみつかるかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/03/28 14:52
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
String""から型'Double'への変...
-
UserForm1.Showでエラーになり...
-
エクセルVBA 「On Error GoTo...
-
【VBA】ワークブックを開く時に...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
On ErrorでエラーNoが0
-
VB.net 重複チェックがしたいです
-
VBでSQL文のUPDATE構文を使った...
-
ACCESSで値を代入できないとは?
-
「実行時エラー '3167' レコー...
-
マクロで"#N/A"のエラー行を削...
-
実行時エラー'-2147467259(8000...
-
実行したSQLの結果を返す方法
-
インポート時のエラー「データ...
-
【VB.NET】 パワポ操作を非表示で
-
VBA処理中に途中で止まってしま...
-
マクロの「SaveAs」でエラーが...
-
VB6とVB.NETでNullの扱いが違う?
-
【VBAエラー】Nextに対するFor...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
On ErrorでエラーNoが0
-
VBAでfunctionを利用しようとし...
-
マクロで"#N/A"のエラー行を削...
-
VBA データ(特定値)のある最...
-
実行時エラー 438 の解決策をお...
-
お助けください!VBAのファイル...
-
文字列内で括弧を使うには
-
エクセルVBA 「On Error GoTo...
-
【VBA】ワークブックを開く時に...
-
マクロの「SaveAs」でエラーが...
-
ACCESSで値を代入できないとは?
-
実行時エラー'-2147467259(8000...
-
インポート時のエラー「データ...
-
【VB.NET】 パワポ操作を非表示で
-
Filter関数を用いた結果、何も...
-
UBoundに配列がありませんとエ...
-
Excel vbaについての質問
-
メールの件名のセットでエラー...
おすすめ情報
nic1821様
すみません、1コ目のスナップの画像を貼り忘れたので貼っておきます。
nic1821様
ご教示頂きました以下のhtmlをIEとWebBrowserで試しましたがIEでは動作しWebBrowserでは私が
掲示した内容と同じエラーが出ました。
https://openlayers.org/en/latest/doc/quickstart. …
nic1821様
>これはWebBrowserクラスのプロパティを設定するだけなのでやってみるとよいかもしれません。
エラーはスルーされましたが空白のページが表示されましたのでやはり問題のあるエラーがあるようです。
後、レジストリもさわってみましたが状況は変わらずでした。色々とアドバイスありがとうございました。