2011-05-30 49 views
17

下面的代碼在Firefox但不是不工作的谷歌瀏覽器:W3C地理位置API在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> 

這是怎麼回事?我認爲谷歌瀏覽器應該支持W3C地理定位API。完美的我

回答

20

作品 - 既鉻11和Firefox 4.0.1在Win 7

  • 確保你沒有在Chrome中禁用位置跟蹤:Options > Under the Hood > Content Settings > Location
  • 由於安全限制,加載了file:///方案的資源不允許訪問位置。請參閱HTML 5 Geo Location Prompt in Chrome
+0

啊,第二個讓我。很高興知道。謝謝您的幫助。 – LandonSchropp 2011-05-31 00:48:18

+0

不客氣:) – 2011-05-31 01:08:05

+0

謝謝。第二個選項有助於;-) – Sopo 2015-07-27 07:16:38

8

在2017年:

注:自Chrome 50,地理位置API將僅在安全環境下,比如HTTPS工作。如果您的網站位於非安全來源(例如HTTP)上,則獲取用戶位置的請求將不再起作用。

0

地理定位API可讓您在用戶同意的情況下發現用戶的位置。您可以將此功能用於引導用戶到目的地以及對用戶創建的內容進行地理標記等功能;例如,標記照片的拍攝地點。

Geolocation API還允許您查看用戶的位置,並隨時隨地移動,並始終在用戶的同意下(並且僅在頁面打開時)對其進行標記。這創建了很多有趣的用例,例如與後端系統集成,以便在用戶就近時準備收集訂單。

使用Geolocation API時,您需要注意許多事情。本指南將向您介紹常見的使用案例和解決方案。

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

0

它工作正常,我 - 在Win既鉻11和Firefox 4.0.1 7

確保您已在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>