none
フォームブラウザで現在位置の取得が出来ません。

    質問

  • お世話になっております。

    掲題の通り、フォームブラウザを利用すると現在位置の取得が出来ません。
    「現在位置を特定できませんでした。」とエラー表示されてしまいます。
    どなたか、解決方法をご存知の方はいらっしゃいませんでしょうか?

    OS はWindows 10 1709です。
    手順は単純で

    ①OSの設定→プライバシー→位置情報からデバイスの位置情報をオンに変更し、
    ②VisualStudio(2013)から、単純なフォーム、WebBrowser、テキストボックスを設置し、コンパイル、F5キーで動作
    ③テキストボックスにhttps://www.google.co.jp/maps/をナビゲート、
    ④右下の現在位置を取得

    のみです。
    フォームブラウザ以外のMS Edge/IE11/GoogleChromeで、現在位置が取得できることは確認しているので、
    OS等の問題ではありません。

    フォームブラウザのみの問題です。

    ご存知の方はご教授ください。
    よろしくお願いいたします。


    2018年2月1日 8:54

すべての返信

  • 書き忘れが…

    ②でF5キーを押下前に作ったブラウザをIE11互換とレジストリにセットします。

    [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
    "WindowsFormsApplication1.exe"=dword:00002af8
    "WindowsFormsApplication1.vshost.exe"=dword:00002af8

    これで、私の想定はIE11と同じ振る舞いをする事を期待しているのですが…
    2018年2月1日 8:58
  • https://social.msdn.microsoft.com/Forums/ie/en-US/ca3b295c-4e73-4682-8149-c20f5450ac02

    海外の投稿ですが、WebBrowser (IE コンポーネント) は GeoLocation をサポートしていないため現在位置を取得することはできないようです。代わりに別名の関数を作成し JavaScript から呼び出すようにすることで代用できるかもしれません。(この辺りは C++ では実装したことがありますが、C# では試していないので実際にできるかどうか分かりません。)

    2018年2月1日 9:10
  • C++で何を作成されたんでしょうか?
    クライアントサイドのjsコード、navigator.geolocation.getCurrentPosition()
    やnavigator.geolocation.XXXを受けるアプリ側のロジックを作成したという事でしょうか?

    それとも、htmlに記述されたjsを変更して、navigator.geolocationではない別名関数を
    呼び出すようにされた、という事でしょうか?

    よろしくお願いいたします。
    2018年2月1日 14:37
  • クライアントサイドのjsコード、navigator.geolocation.getCurrentPosition() やnavigator.geolocation.XXXを受けるアプリ側のロジックを作成したという事でしょうか?

    それとも、htmlに記述されたjsを変更して、navigator.geolocationではない別名関数を呼び出すようにされた、という事でしょうか?

    後者です。

    参考サイト: https://www.wabiapp.com/WabiSampleSource/windows/javascript_call_cpp.html

    2018年2月2日 7:17
  • SetExternalDispatch()... 物凄く、まどろっこしいですね…。
    そんな事より、navigator.geolocation.getCurrentPosition()
    を奪い取って動いてくれるアプリ側の関数などは無いでしょうか?

    html/jsは外部なので触ることは出来ません。
    https://www.google.co.jp/maps/

    で期待する位置情報を返すことが目標ですが…


    2018年2月2日 10:56
  • navigator.geolocation.getCurrentPosition()
    を奪い取って動いてくれるアプリ側の関数などは無いでしょうか?

    残念ながら無さそうですね。。

    そもそも、以前お伝えしたように WebBrowser コントロールは、現在位置の取得に対応していません。JavaScript の現在位置取得関数を上書きするしかないのではと思っております。

    2018年2月4日 16:53