地理定位 API 不工作
Geolocation API not working
我正在构建一个天气页面,我需要获取用户位置以获取天气数据。
if ((navigator.geolocation)&&(location!=null)) {
var locations = null;
window.navigator.geolocation.getCurrentPosition(function(position){
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
locations = latitude+'/'+longitude;
show_all_weather_components();
console.log("1");
});
}
/* If location is not found the set default location as USDC0001, which is default code for washington DC. */
var locations= !locations?"USDC0001":locations;
console.log("2");
我在控制台中首先获得 2。 IE。它总是设置默认地址而不是用户实际地址。我知道这听起来很荒谬,但是有什么方法可以避免此处代码的 "non-blocking" 模式。
或者是否有其他方法来获取用户位置。我也尝试了 ip 数据库 Api,但它没有精确地工作。
有一次我想在if条件部分的下面放一个延迟,但是由于这个天气应用程序的不同模块,我的页面已经很慢了。任何想法将不胜感激。
谢谢
您必须使用 getCurrentPosition 的其他参数。这是一个例子:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<div id="result"></div>
<script>
var result = document.getElementById('result');
if (navigator.geolocation && location != null) {
window.navigator.geolocation.getCurrentPosition(function(position){
result.text = position.coords.latitude + '/' + position.coords.longitude;
}, function(error) {
switch(error.code) {
case error.PERMISSION_DENIED:
result.innerHTML = "Denied request for Geolocation."
break;
case error.POSITION_UNAVAILABLE:
result.innerHTML = "Location unavailable."
break;
case error.TIMEOUT:
result.innerHTML = "Location request timed out."
break;
case error.UNKNOWN_ERROR:
result.innerHTML = "An unknown error occurred."
break;
}
}, { timeout: 1000, maximumAge: 1000 });
}
</script>
</body>
我正在构建一个天气页面,我需要获取用户位置以获取天气数据。
if ((navigator.geolocation)&&(location!=null)) {
var locations = null;
window.navigator.geolocation.getCurrentPosition(function(position){
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
locations = latitude+'/'+longitude;
show_all_weather_components();
console.log("1");
});
}
/* If location is not found the set default location as USDC0001, which is default code for washington DC. */
var locations= !locations?"USDC0001":locations;
console.log("2");
我在控制台中首先获得 2。 IE。它总是设置默认地址而不是用户实际地址。我知道这听起来很荒谬,但是有什么方法可以避免此处代码的 "non-blocking" 模式。 或者是否有其他方法来获取用户位置。我也尝试了 ip 数据库 Api,但它没有精确地工作。
有一次我想在if条件部分的下面放一个延迟,但是由于这个天气应用程序的不同模块,我的页面已经很慢了。任何想法将不胜感激。 谢谢
您必须使用 getCurrentPosition 的其他参数。这是一个例子:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<div id="result"></div>
<script>
var result = document.getElementById('result');
if (navigator.geolocation && location != null) {
window.navigator.geolocation.getCurrentPosition(function(position){
result.text = position.coords.latitude + '/' + position.coords.longitude;
}, function(error) {
switch(error.code) {
case error.PERMISSION_DENIED:
result.innerHTML = "Denied request for Geolocation."
break;
case error.POSITION_UNAVAILABLE:
result.innerHTML = "Location unavailable."
break;
case error.TIMEOUT:
result.innerHTML = "Location request timed out."
break;
case error.UNKNOWN_ERROR:
result.innerHTML = "An unknown error occurred."
break;
}
}, { timeout: 1000, maximumAge: 1000 });
}
</script>
</body>