web-dev-qa-db-ja.com

W3C Geolocation APIがChrome

以下のコードはFirefoxでは機能しますが、Google Chromeでは機能しません。

<!DOCTYPE html>
<html>
    <head>
        <title>title</title>
        <script type="text/javascript">
            var successCallback = function(data) {
                console.log('latitude: ' + data.coords.latitude + ' longitude: ' + data.coords.longitude);
            };

            var failureCallback = function() {
                console.log('location failure :(');
            };

            var logLocation = function() {

                //determine if the handset has client side geo location capabilities
                if(navigator.geolocation){
                   navigator.geolocation.getCurrentPosition(successCallback, failureCallback);
                }
                else{
                   alert("Functionality not available");
                }
            };

            logLocation();
            setTimeout(logLocation, 5000);
        </script>
    </head>
    <body>
        <p>Testing</p>
    <body>
</html>

どうしたの? Google ChromeはW3C Geolocation APIをサポートすることになっていると思いました。

18
LandonSchropp

私にとって完璧に機能します-Chrome 11とWin 7上のFirefox 4.0.1の両方で

  • Chromeで位置追跡を無効にしていないことを確認してください:Options > Under the Hood > Content Settings > Location
  • セキュリティ上の制限により、file:///スキームは場所へのアクセスを許可されていません。 ChromeのHTML 5位置情報プロンプト を参照してください。
21

ドメインが安全でない場合(HTTPSではなくHTTPなど)、Chromeの場所へのアクセスは許可されません。これはChromeバージョン50(2016年4月20日12PM PST))からです。

詳細は https://developers.google.com/web/updates/2016/04/geolocation-on-secure-contexts-only をご覧ください。

18
Mark

2017年:

注:Chrome 50以降、Geolocation APIはHTTPSなどの安全なコンテキストでのみ機能します。サイトが安全でないOrigin(HTTPなど)でホストされている場合、ユーザーの場所は機能しなくなります。

Geolocation APIがChrome 5 の安全でないオリジンから削除されました)==

10
kurumkan

私にとってはうまくいきます-Chrome 11とWin 7上のFirefox 4.0.1の両方で

Chromeで位置追跡を無効にしていないことを確認します。[オプション]> [高度な設定]> [コンテンツの設定]> [位置]で許可を許可し、許可を確認してから実行してください

実行した後はsucesscallbackになるか、そうでなければerrorcallbackになります

function sucesscallback (position)
{

var userLatLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

   
    var myOptions = {
        zoom: 15,
        center: userLatLng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var mapObject = new google.maps.Map(document.getElementById("googleMap"), myOptions);

    var marker = new google.maps.Marker({
        map: mapObject,
        position: userLatLng

    });
   
}




    function failureCallback(error) {
    
        switch (error.code) {
            case 1:
                alert("User denied the request for Geolocation.");
                break;
            case 2:
                alert("Location information is unavailable. Please ensure Location is On");
                break;
            case 3:
                alert("timeout");
                break;
            case 4:
                alert("An unknown error occurred.");
                break;
        }
    }
<div id='googleMap' style='width:300px;height:300px;'>
</div>

Geolocation APIを使用すると、ユーザーの同意を得て、ユーザーの位置を検出できます。この機能を使用して、ユーザーを目的地に案内したり、ユーザーが作成したコンテンツにジオタグを付けたりすることができます。たとえば、写真が撮影された場所をマークします。

また、Geolocation APIを使用すると、常にユーザーの同意を得て(ページが開いている間のみ)、ユーザーがどこにいるかを確認し、移動中にタブを維持できます。これにより、バックエンドシステムと統合してユーザーが近くにいる場合に収集の注文を準備するなど、多くの興味深いユースケースが作成されます。

Geolocation APIを使用するときは、多くのことに注意する必要があります。このガイドでは、一般的な使用例とソリューションについて説明します。

https://developers.google.com/web/fundamentals/native-hardware/user-location/?hl=en

0
Bahram Etemad