2013-02-28 63 views
1

我有一个简单的JavaScript代码,可以获得用户的坐标,在计算机上工作正常,但对手机无法说明。地理位置在手机上不起作用

function getLocation() 
    { 
    if (navigator.geolocation) 
    { 
    navigator.geolocation.getCurrentPosition(showPosition); 
    } 
    else{x.innerHTML="Geolocation is not supported by this browser.";} 
} 

从w3schools得到了这个。第一次它问我是否想分享我的位置(同意),当我按下按钮执行该功能时没有任何反应(也没有错误信息),在我的电脑上工作,所以它不是代码。 尝试在2个不同的设备上:星系连接和星系s2都变甜。 尝试在铬,铬测试版,Firefox和内置的浏览器。 对其中的一些它甚至不打扰弹出“共享位置”消息。 我该如何解决这个问题?

+0

http://w3fools.com – Jason 2013-03-26 19:37:45

回答

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> 
相关问题