以下のコードは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をサポートすることになっていると思いました。
私にとって完璧に機能します-Chrome 11とWin 7上のFirefox 4.0.1の両方で
Options > Under the Hood > Content Settings > Location
file:///
スキームは場所へのアクセスを許可されていません。 ChromeのHTML 5位置情報プロンプト を参照してください。ドメインが安全でない場合(HTTPSではなくHTTPなど)、Chromeの場所へのアクセスは許可されません。これはChromeバージョン50(2016年4月20日12PM PST))からです。
詳細は https://developers.google.com/web/updates/2016/04/geolocation-on-secure-contexts-only をご覧ください。
2017年:
注:Chrome 50以降、Geolocation APIはHTTPSなどの安全なコンテキストでのみ機能します。サイトが安全でないOrigin(HTTPなど)でホストされている場合、ユーザーの場所は機能しなくなります。
Geolocation APIがChrome 5 の安全でないオリジンから削除されました)==
私にとってはうまくいきます-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