69

HTML 5を使い始めて、地理的位置をテストしています...これまでのところ気に入っています。しかし、私は少しスピードが上がっています...地理的位置を取得しようとすると、chromeはページが私の位置を取得するのを自動的にブロックします。これは、以下のサイトなどの他のサイトでは発生しません。

http://html5demos.com/geo

私が使用しているスクリプト:

<script type="text/javascript" JavaScript" SRC="geo.js"></script>   
<script type="text/javascript" JavaScript" SRC="Utility.js"></script> 
<script type="text/javascript" JavaScript" SRC="jquery.js"></script> 
<script type="text/javascript" JavaScript" SRC="modernizr.js"></script>  

function get_location() {

        if (geo_position_js.init()) {
            geo_position_js.getCurrentPosition(show_map, handle_error);
        }

    }
    function show_map(position) {
        var latitude = position.coords.latitude;
        var longitude = position.coords.longitude;

        alert("lat:" + latitude + " long:" + longitude);


    }
    function handle_error(err) {
        alert(err.code);
        if (err.code == 1) {
            // user said no!
        }
    }

    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(show_map, handle_error);
    } else {
        error('not supported');
    }

私は自分のマシンのローカルディレクトリからこれをテストしているので、「http://whatever.com/mytestpage.html」のような「ドメイン」は実際にはありません。これが私がプロンプトを表示されない理由ですか?もしそうなら、ブラウザにユーザーの地理的位置を取得する許可を要求するように強制することは可能ですか?私のシナリオでは可能ですか?

4

9 に答える 9

97

Chromeには、URIからのジオロケーションを使用するための何らかのセキュリティ制限がありますがfile:///、残念ながら、それを示すエラーは記録されていないようです。ローカルWebサーバーから動作します。Pythonをインストールしている場合は、テストファイルがあるディレクトリでコマンドプロンプトを開いて、コマンドを発行してみてください。

python -m SimpleHTTPServer

ポート8000​​でWebサーバーを起動する必要があります(別のポートである可能性がありますが、リッスンしているポートがコンソールに表示されます)。次に、http:// localhost:8000/mytestpage.htmlにアクセスします。

Pythonをお持ちでない場合は、Rubyに同等のモジュールがあります。または、Visual WebDeveloperExpressにはローカルWebサーバーが組み込まれています。

于 2011-03-25T11:30:03.147 に答える
30

上記のどれも私を助けませんでした。

少し調べてみたところ、M50(2016年4月)の時点で、ChromeにはGeolocationの安全なオリジン(HTTPSなど)が必要であることがわかりました。

安全でないオリジンの非推奨機能

ホスト「localhost」は、その「潜在的に安全」な特別なものです。開発マシンにデプロイしている場合、開発中にエラーが表示されない場合があります。

于 2016-05-11T17:33:19.100 に答える
6

robertcの回答ですでに述べたように、Chromeは、ローカルファイルを使用した地理的位置などの特定の機能をブロックします。独自のウェブサーバーを設定するより簡単な方法は、パラメータを使用してChromeを起動すること --allow-file-access-from-filesです。次に、設定で地理的位置をオフにしなかった場合は、地理的位置を使用できます。

于 2015-10-23T08:11:45.547 に答える
3

最も簡単な方法は、アドレスバーの左側の領域をクリックして、そこで場所の設定を変更することです。それはのためにさえ場所オプションを設定することを可能にしますfile:///

ここに画像の説明を入力してください

于 2017-03-31T12:45:59.520 に答える
2

設定でブロックされていないことを確認してください

http://www.howtogeek.com/howto/16404/how-to-disable-the-new-geolocation-feature-in-google-chrome/

于 2013-05-15T00:53:04.557 に答える
2

サーバーの背後でホストしているが、まだ問題が発生している場合:localhost127.0.0.1に変更してみてください(例:http:// localhost:8080 /からhttp://127.0.0.1:8080 /)

私が直面していた問題は、Eclipse IDE(eclipse luna)内でapachetomcatを使用してサイトにサービスを提供していたことでした。

健全性チェックには、Remy Sharpのデモを使用していました: https ://github.com/remy/html5demos/blob/eae156ca2e35efbc648c381222fac20d821df494/demos/geo.html

サーバーでコードをホストしているにもかかわらず、エラー関数を微調整した後、エラーが発生していました(Firefoxでのみ機能し、chromeとsafariで失敗しました):

「ユーザーがジオロケーションを拒否しました」

より詳細なエラーメッセージを表示するために、次の変更を行いました。

function error(msg) {
  var s = document.querySelector('#status');
  msg = msg.message ? msg.message : msg; //add this line
  s.innerHTML = typeof msg == 'string' ? msg : "failed";
  s.className = 'fail';

  // console.log(arguments);
}

http://10.0.2.2:8080のvirtualboxIE10の背後にあるInternetExplorerで失敗しました:

「現在地を特定できません」

于 2015-09-24T21:20:39.857 に答える
1

簡単な回避策として、HTMLファイルをDropboxなどのクラウド共有にコピーし、ブラウザーで共有リンクを使用するだけです。簡単。

于 2015-01-16T01:45:07.397 に答える
0

Gelocation APIを試していたときに、私もこの問題を抱えていました。次に、VisualStudioからIISExpressを起動し、ページにアクセスしました。すべてのブラウザーで問題なく動作しました。

于 2015-12-19T10:52:18.027 に答える
0

Google Chromeの設定を確認し、位置情報へのアクセスを許可します

Change your default location settings.
On your computer, open Chrome.
At the top right, click More Settings.
Under "Privacy and security," click Site settings.
Click Location.
Turn Ask before accessing on or off.

これらの設定を変更した後、Geolocationが機能しました。

于 2021-02-28T23:35:08.667 に答える