标签: w3c-geolocation

有没有办法检查地理位置是否已使用Javascript拒绝?

如果地理位置被拒绝,我需要JavaScript才能显示手动输入.

我尝试过的:

Modernizr.geolocation
navigator.geolocation
Run Code Online (Sandbox Code Playgroud)

两者均未描述用户之前是否拒绝访问地理位置.

javascript html5 w3c-geolocation

57
推荐指数
4
解决办法
7万
查看次数

如何在C#应用程序中使用HTML5地理定位

我正在开发一种防盗软件,以获得计算机的确切位置.内置gps的笔记本在我的国家非常罕见,所以我必须在我的应用程序中使用HTML5 Geolocation.

对于Internet Explorer 9+,有一个注册表项,您可以添加URL以允许URL而无需用户验证.如果REG_DWORDHKCU\Software\Microsoft\Internet Explorer\Geolocation\HostConsent路径浏览器下添加名为domain.com 的值,则会自动允许地理定位请求.但是,我无法运行Internet Explorer隐藏,因此不适合我,因为小偷不应该意识到并看到发生了什么.

  • 我需要以某种方式隐藏Internet Explorer
  • ...或者我需要将webkit或其他内容嵌入到我的应用程序中,但我不知道如何使用它或如何以编程方式允许此请求.

我更喜欢第二种方式,因为Internet Explorer现在已被Microsoft终止,我认为下一版本将具有不同的结构.

如何在我的应用程序中嵌入和使用Webkit或GeckoFX?如何在此应用程序中以编程方式允许地理定位请求?

c# html5 geolocation w3c-geolocation

19
推荐指数
1
解决办法
3058
查看次数

navigator.geolocation.getCurrentPosition()永远不会在Android上的WebView中返回

我正在尝试访问Android WebView中提供的HTML Geolocation API(使用SDK版本24).

主要问题是JavaScript的调用navigator.geolocation.getCurrentPosition()永远不会返回(既没有错误,也没有位置数据),而在应用程序端,我检查权限并使用android.webkit.GeolocationPermissions.Callback类正确地将它们传递给WebView .

更新:这里只是澄清一下,"永不返回"我的意思是没有任何太多提供的回调navigator.geolocation.getCurrentPosition(success, error)被调用.

在我为测试它而构建的示例应用程序(只有一个托管WebView的小活动)我在清单中声明权限并在App start上正确请求它们.我看到提示,可以授予或拒绝位置信息的许可.

表现:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Run Code Online (Sandbox Code Playgroud)

主要形式的代码:

public boolean checkFineLocationPermission() {
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED) {

        if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                Manifest.permission.ACCESS_FINE_LOCATION) && !mIsPermissionDialogShown) {
            showPermissionDialog(R.string.dialog_permission_location);
        } else {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                    PERMISSION_ACCESS_FINE_LOCATION);
        }
        return false;
    } else {
        return true;
    }
} 
Run Code Online (Sandbox Code Playgroud)

我可以在运行时使用期间检查权限Context.checkSelfPermission(),我看到相应的权限被授予我的应用程序.

然后我尝试在WebView控件中打开一个网页.我在设置中启用了所有必需的选项:

    mWebSettings.setJavaScriptEnabled(true);
    mWebSettings.setAppCacheEnabled(true);
    mWebSettings.setDatabaseEnabled(true);
    mWebSettings.setDomStorageEnabled(true);
    mWebSettings.setGeolocationEnabled(true);
    mWebSettings.setJavaScriptCanOpenWindowsAutomatically(true);
    mWebSettings.setSupportZoom(true);
Run Code Online (Sandbox Code Playgroud)

我使用以下 …

javascript android android-webview w3c-geolocation

18
推荐指数
1
解决办法
2226
查看次数

有没有办法检测用户是否已经授权使用navigator.geolocation?

除了第一次设置cookie之外,有没有办法检测用户是否已经授予navigator.geolocation权限以返回浏览器的纬度/经度?

如果有,它是什么,所有浏览器是一样的,还是所有浏览器都不同?

该主题已在其他地方得到部分解答

根据GeoLocation API - Chrome/Safari - 权限管理和视觉差异,Chrome要求获得可撤销的一次性权限.我还没有读完这篇文章,但似乎存储权限并不是纯粹的Chrome操作.

html5 cross-browser geolocation user-permissions w3c-geolocation

16
推荐指数
2
解决办法
5334
查看次数

Safari 8和7.1中的地理定位API一直在寻求许可

我已经在我的webapp中构建了Geolocation API,所有浏览器都运行正常.Safari 8和7.1除外.在允许或不允许浏览器之后,浏览器一直要求许可,并最终导致浏览器(选项卡)无法使用.只需访问Safari中的http://html5demos.com/geo即可轻松重现.

有没有解决这个问题,或者这只是Safari中的一个错误?我搜索但找不到任何相关的东西.

在此输入图像描述

javascript safari geolocation w3c-geolocation

15
推荐指数
1
解决办法
3764
查看次数

检查Geolocation是否被允许并获得Lat Lon

我正在构建一个客户端将在其页面上安装的小脚本.地理位置不是必需的,但如果它存在,那将是很好的.有没有办法让我检查客户页面是否已请求地理定位信息,如果用户选择允许获取lat&lon而不创建另一个提示?

javascript w3c-geolocation

12
推荐指数
3
解决办法
1万
查看次数

如何在 HTML5 GeoLocation API 中使用异步等待?

第一个方法返回承诺。

getCoordinates() {
  return new Promise(function(resolve, reject) {
    navigator.geolocation.getCurrentPosition(resolve, reject);
  });
}
Run Code Online (Sandbox Code Playgroud)

返回reverseGeoCode方法的结果。

async getAddress() {
  await this.getCoordinates().then(position => {
    let latitude = position.coords.latitude;
    let longitude = position.coords.longitude;
    let url = Constants.OSMAP_URL + latitude + "&lon=" + longitude;
    // Reverse geocoding using OpenStreetMap
    return this.reverseGeoCode(url);
  });
}
Run Code Online (Sandbox Code Playgroud)

使用自定义类进行 API 调用并返回结果。

reverseGeoCode(url) {
  let requestService = new RequestService("json", url);
  requestService.call().then(result => {
    return result;
  });
}
Run Code Online (Sandbox Code Playgroud)

我是这样称呼的:

let geoLocation = new GeoLocation();
geoLocation.getAddress().then(r => {
  console.log(r);
});
Run Code Online (Sandbox Code Playgroud)

控制台日志未定义。

javascript asynchronous promise w3c-geolocation

10
推荐指数
2
解决办法
9323
查看次数

当用户在Firefox和Chrome中关闭"物理位置"提示时如何处理?

我正在使用Geolocation对象和getCurrentPosition().

你有没有看到每次你使用getCurrentPosition Firefox和Chrome提示这些按摩?

铬:

Example.com wants to track your physical location [allow] [deny] [ X close ]
Run Code Online (Sandbox Code Playgroud)

火狐:

Example.com wants to know your location [Share Location] [Don't Share] [Close]
Run Code Online (Sandbox Code Playgroud)

我的问题是:当用户没有"允许"或"拒绝"位置选项而是关闭提示时,如何处理?

我有这个JAVASCRIPT代码但是当用户关闭提示时它不起作用:

            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(
                    onSuccess,
                    onError,
                    {
                        //enableHighAccuracy: true,
                        timeout: 5000
                        //maximumAge: 120000
                    }
                );
                    alert("holaaaa");
            } else {
                alert('Geolocation not supported.');
            }
Run Code Online (Sandbox Code Playgroud)

我遇到了一些问题,请帮忙吗?

这个问题与这篇文章有关: 如何在用户允许或拒绝访问"物理位置"时调用函数?

javascript google-chrome geolocation w3c-geolocation

9
推荐指数
1
解决办法
4611
查看次数

Chrome IOS HTML5地理位置权限被拒绝

当尝试在ios的移动Chrome上使用HTML5地理定位API时,我的应用程序会抛出"权限被拒绝"错误,甚至没有提示共享我的位置.还有其他人遇到过这个问题吗?

PS.这发生在本地和heroku实例上.

这是我在文档就绪时运行的代码

    var displayCloseFoo = function(position) {
        var lat = position.coords.latitude;
        var lon = position.coords.longitude;

    };

    var displayError =  function(error) {
        var errors = {
            1: 'Permission denied',
            2: 'Position unavailable',
            3: 'Request timeout'
        };
        alert("Error: " + errors[error.code]);
    };

    var runGeo =  function(){
        if (navigator.geolocation) {
            var timeoutVal = 10 * 1000 * 1000;
            navigator.geolocation.getCurrentPosition(
                    displayCloseFoo,
                    displayError,
                    { enableHighAccuracy: true, timeout: timeoutVal, maximumAge: 0 }
            );
        }
        else {
            alert("Geolocation is not supported by this browser");
        }
    }; …
Run Code Online (Sandbox Code Playgroud)

html5 google-chrome ios w3c-geolocation

9
推荐指数
1
解决办法
1万
查看次数

navigator.geolocation.watchPosition只是不起作用

好的,我的代码在下面,所以我将解释我正在做什么以及我得到的结果.

我正在尝试使用navigator.geolocation.watchPosition获取用户位置.我已经指定了成功和错误回调.我第一次得到这个位置通常是非常不准确所以我使用watchPosition继续获取位置,直到它尝试了4次或者得到一个精确到500米以内的位置.

我遇到的问题:

  • 它永远不会进入Android的错误回调(在HTC Sensation和三星Galaxy S3上测试).然而,在iPhone上,它似乎在50%的时间内输入错误回调.

  • 它也永远不会超时.它一直在搜索,直到它收到一个位置.

  • 检索位置需要0-60秒.有时它在页面加载之前就已经有了,有时它需要一分钟的大部分时间.对于为什么它有时会快速获取它以及为什么不在其他时间也没有可辨别的模式.

我搜索了许多论坛帖子和许多stackoverflow问题以及地理定位和其他任何文档的规范.关于它的信息不多,更不用说这些问题了.有没有我做错了?或者这只是与位置合作的本质?

if(navigator.geolocation){
        var geo_count = 0;

        var wpid = navigator.geolocation.watchPosition(success, error, {
            enableHighAccuracy: true, 
            maximumAge: 0, 
            timeout: 10000
        });

        function success(position){
            alert(position.coords.accuracy)

            geo_count = geo_count + 1;

            if(position.coords.latitude && position.coords.longitude && position.coords.accuracy < 500){
                navigator.geolocation.clearWatch(wpid); 

                alert('position obtained!');    
            }
            else if(geo_count > 4){
                navigator.geolocation.clearWatch(wpid);

                alert('inaccurate position obtained');
            }
        }

        function error(error){
            switch(error.code){
                case 1:
                    alert('permission denied');
                    break;
                case 2:
                    alert('position unavailable');
                    break;
                case 3:
                    alert('timeout');
                    break;
                default:
                    alert('unknown error');
                    break;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

javascript geolocation w3c-geolocation

8
推荐指数
1
解决办法
5056
查看次数