Javascripts 地理定位 - 用户拒绝提供数据

Posted

技术标签:

【中文标题】Javascripts 地理定位 - 用户拒绝提供数据【英文标题】:Javascripts geolocalization - User refuses to give data 【发布时间】:2015-10-02 14:22:17 【问题描述】:

这个JS函数可以正常工作;但如果用户拒绝通过浏览器提供本地化,则不会。

如何修改?

function getPosition()
  

  if (navigator.geolocation)
    
    navigator.geolocation.getCurrentPosition(showmyPosition);
    
  else
    
    alert("Geolocation doesn't work"); 
    
  

function showmyPosition(position)
   
 document.location.href="/near?lat="+  position.coords.latitude +"&lng="+ position.coords.longitude +"";
     

【问题讨论】:

如果用户拒绝提供他们的位置,那么你就不能拥有它。就这么简单。 【参考方案1】:

navigation.geolocation 不检查用户是否接受地理定位,它只检查浏览器是否支持地理定位。

但是,您可以为 getCurrentPosition 提供错误回调,您可以从中读取错误。请参阅下面的示例

function getPosition() 
    if (navigator.geolocation) 
        navigator.geolocation.getCurrentPosition(showmyPosition, errorCallback);
    
    else 
       alert("Browser does not support geolocation");  
    


function showmyPosition(position) 
    document.location.href = "/near?lat=" + position.coords.latitude + "&lng=" + position.coords.longitude + "";


function errorCallback(error) 
    if (error.code === 1) 
        alert("User denied geolocation");
    

【讨论】:

【参考方案2】:

如果用户不允许通过浏览器进行地理定位,您可以使用 IP 地址来估计他们的位置。

您可以从http://ipinfodb.com 的 API 注册

【讨论】:

以上是关于Javascripts 地理定位 - 用户拒绝提供数据的主要内容,如果未能解决你的问题,请参考以下文章

当用户选择“不再询问”并禁用地理定位时,React native `Geolocation.getCurrentPosition` 承诺将永远不会被解决/拒绝

地理定位的自定义消息

React Native 版本 .apk 在更高版本的 android 设备中崩溃,地理定位权限被拒绝错误

用户地理位置 - 案例研究

地理定位 video web存储

如何检测地理定位的负面用户响应