アプリ版:「スタンプのみでお礼する」機能のリリースについて

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'は定義されていません。

③下の画像がデバッガーを使用してデバックをした際のエラー箇所です。

宜しくお願いします。

「vb.netのwebBrowserでop」の質問画像

質問者からの補足コメント

  • nic1821様
    すみません、1コ目のスナップの画像を貼り忘れたので貼っておきます。

    「vb.netのwebBrowserでop」の補足画像1
    No.1の回答に寄せられた補足コメントです。 補足日時:2019/05/10 09:21
  • nic1821様
    ご教示頂きました以下のhtmlをIEとWebBrowserで試しましたがIEでは動作しWebBrowserでは私が
    掲示した内容と同じエラーが出ました。
    https://openlayers.org/en/latest/doc/quickstart. …

      補足日時:2019/05/10 09:55
  • nic1821様
    >これはWebBrowserクラスのプロパティを設定するだけなのでやってみるとよいかもしれません。
    エラーはスルーされましたが空白のページが表示されましたのでやはり問題のあるエラーがあるようです。
    後、レジストリもさわってみましたが状況は変わらずでした。色々とアドバイスありがとうございました。

      補足日時:2019/05/14 10:41

A 回答 (2件)

私が下記の実例の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の違いに原因があると思います。
この回答への補足あり
    • good
    • 0
この回答へのお礼

返答ありがとうございます。
記述してなかったのですが質問する前にhtmlファイルで動作する事は確認しました。やはりWebBrowserオブジェクトの問題なのですかね?
もう少しみなさんからの返答を待ってみます。

お礼日時:2019/05/09 18:01

1コ目のスナップ、確認しましたが手がかりはなさそうですねぇ。


(ラインが0になっていたりするのは、Javascriptが圧縮されていて改行コードがないためだと思います。)
WebBrowserが非対応の観点でググってみたところ、下記が気になりました。
https://docs.microsoft.com/ja-jp/dotnet/api/syst …
そういえばIEは大したエラーでなくてもエラーで止まった覚えがあります。
これはWebBrowserクラスのプロパティを設定するだけなのでやってみるとよいかもしれません。
また、実際にWebBrowserクラスが古いかもしれないという点ではやはり下記がありました。
https://htsign.tumblr.com/post/2312930541
ただ、これはだいぶ情報が古いため、今もあてはまるかはわからないです。
レジストリをいじるため注意が必要ですが、これをやってみたり、これ関する内容をググってみると何かみつかるかもしれません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ご教示頂きました内容を少し調べてみます。

お礼日時:2019/05/13 17:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!