我有一个简单的JavaScript代码可以让用户使用coords,在计算机上工作得很好,但对于手机却说不一样。
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
从w3schools得到了这个。第一次它问我是否想要分享我的位置(同意),当我按下按钮执行功能没有任何反应(没有错误信息),在我的电脑上运行所以它不是代码。 尝试了两种不同的设备:galaxy nexus和galaxy s2都是蜜饯的。 尝试过chrome,chrome beta,firefox和内置浏览器。 在其中一些它甚至懒得弹出“共享位置”消息。 我该如何解决这个问题?
答案 0 :(得分:1)
之前我遇到过这个问题,而且我认为强制共享位置是不可能的,至少你必须提示用户是否要转向位置服务上。但是,here's一个线程详细说明了如何提示Android用户打开共享位置。另外,我会避免使用w3schools。
良好的地理定位应用: http://www.9lessons.info/2011/06/geo-location-with-html5-and-jquery.html
答案 1 :(得分:0)
Html5地理位置需要用户权限。如果您不想这样做,请选择https://www.geoip-db.com之类的外部定位器。它们提供JSON和JSONP回调解决方案。
简单的javascript示例:
<!DOCTYPE html>
<html>
<head>
<title>Geo City Locator by geoip-db.com</title>
</head>
<body>
<div>Country: <span id="country"></span></div>
<div>State: <span id="state"></span></div>
<div>City: <span id="city"></span></div>
<div>Postal: <span id="postal"></span></div>
<div>Latitude: <span id="latitude"></span></div>
<div>Longitude: <span id="longitude"></span></div>
<div>IP address: <span id="ipv4"></span></div>
</body>
<script>
var country = document.getElementById('country');
var state = document.getElementById('state');
var city = document.getElementById('city');
var postal = document.getElementById('postal');
var latitude = document.getElementById('latitude');
var longitude = document.getElementById('longitude');
var ip = document.getElementById('ipv4');
function callback(data)
{
country.innerHTML = data.country_name;
state.innerHTML = data.state;
city.innerHTML = data.city;
postal.innerHTML = data.postal;
latitude.innerHTML = data.latitude;
longitude.innerHTML = data.longitude;
ip.innerHTML = data.IPv4;
}
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://geoip-db.com/json/geoip.php?jsonp=callback';
var h = document.getElementsByTagName('script')[0];
h.parentNode.insertBefore(script, h);
</script>
</html>