HTML5地理位置不等待用户输入

用户名

我正在尝试创建一个Web应用程序,该应用程序将提示用户允许使用其位置。我正在使用以下功能。

function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(
            function(position){
                return("@" + position.coords.latitude + "," + position.coords.longitude);
            }
        );
    } else {
        return("Unknown");
    }
}

我的问题是,在提示用户允许进行位置跟踪之前,该函数返回“ undefined”。有谁知道我可以如何修改此代码以等到用户选择之后?另外,我似乎看不到是什么引发了未定义的错误。

亚历克斯·桑托斯(Alex Santos)

对于这种问题,承诺是一个简单的答案。navigator.geolocation.getCurrentPosition是一个异步调用-这意味着您将调用该方法并将其传递给回调函数,无论何时检索到位置,都将使用结果值(位置)来调用您的回调函数。根据您要调用的异步函数,调用回调函数可能需要1毫秒或1个小时,您所知道的是只要该值可用,它就会“通知”您。

getLocation函数而言,要么根本不返回任何内容,要么返回string Unknown请注意,从回调返回结果function(position){与on无关getLocation一个非常简单的解决方案(不使用Promises)是简单地给您的getLocation函数一个回调,所以它看起来像这样:

function getLocation(callback) {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(
            function(position){
                callback("@" + position.coords.latitude + "," + position.coords.longitude)
            }
        );
    } else {
      return "Unknown";
    }
}

getLocation(function(res) { /* do something with the result */ });

如前所述,解决此问题的另一种方法是使用Promises要么使用本机ES6 Promise,要么使用像Bluebird这样的广泛使用的库(我的最爱)。有了promise,代码将看起来像这样:(我建议您阅读一下它,因为Javascript完全是关于异步方法的,因此您应该对这类问题有很好的了解)

function getLocation(callback) {
    var promise = new Promise(function(resolve, reject) {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(
                function(position){
                    resolve("@" + position.coords.latitude + "," + position.coords.longitude)
                }
            );
        } else {
          reject("Unknown");
        }
    });

    return promise;
}

var locationPromise = getLocation();
locationPromise
      .then(function(loc) { console.log(loc); })
      .catch(function(err) { console.log("No location"); });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

HTML5地理位置与Google Maps地理位置api

来自分类Dev

如何使用HTML5地理位置javascript使用地理位置(用户的当前位置)初始化Google Maps API

来自分类Dev

使用html5地理位置api创建地理围栏

来自分类Dev

Javascript和HTML5地理位置-如何存储位置?

来自分类Dev

HTML5地理位置watchPosition仅被调用一次

来自分类Dev

各种浏览器中的HTML5地理位置API

来自分类Dev

在Rails中发布表单时使用HTML5地理位置

来自分类Dev

HTML5地理位置不正确

来自分类Dev

HTML5地理位置不同步

来自分类Dev

需要HTML5地理位置+ javascript帮助

来自分类Dev

Google Maps API中的HTML5地理位置

来自分类Dev

Symfony2:IvoryGoogleMapBundle中的HTML5地理位置API

来自分类Dev

HTML5地理位置不正确

来自分类Dev

HTML5地理位置跟踪未返回正确的坐标

来自分类Dev

使用HTML5地理位置在这里映射

来自分类Dev

html5地理位置是否存在“ GPS状态已更改”事件?

来自分类Dev

将HTML5地理位置结果发送回Node / Express Server

来自分类Dev

无法获取html5地理位置坐标

来自分类Dev

HTML5地理位置,点击时将经/纬度传递给PHP变量

来自分类Dev

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

来自分类Dev

错误处理不适用于Chrome中的HTML5地理位置

来自分类Dev

如何使用html / html5中的用户输入获取完整的地理位置详细信息?

来自分类Dev

HTML5地理位置:如何在成功或错误回调后将lat和long值传递给AJAX调用

来自分类Dev

为什么HTML5地理位置在不同的Web浏览器中具有不一致的错误行为

来自分类Dev

实时检索地理位置(HTML5)

来自分类Dev

关闭Openlayers 3地理位置

来自分类Dev

无法添加Cordova 3.4.0地理位置插件

来自分类Dev

在HTML5 Web Worker中使用地理位置

来自分类Dev

HTML5中的精确地理位置如何工作?

Related 相关文章

  1. 1

    HTML5地理位置与Google Maps地理位置api

  2. 2

    如何使用HTML5地理位置javascript使用地理位置(用户的当前位置)初始化Google Maps API

  3. 3

    使用html5地理位置api创建地理围栏

  4. 4

    Javascript和HTML5地理位置-如何存储位置?

  5. 5

    HTML5地理位置watchPosition仅被调用一次

  6. 6

    各种浏览器中的HTML5地理位置API

  7. 7

    在Rails中发布表单时使用HTML5地理位置

  8. 8

    HTML5地理位置不正确

  9. 9

    HTML5地理位置不同步

  10. 10

    需要HTML5地理位置+ javascript帮助

  11. 11

    Google Maps API中的HTML5地理位置

  12. 12

    Symfony2:IvoryGoogleMapBundle中的HTML5地理位置API

  13. 13

    HTML5地理位置不正确

  14. 14

    HTML5地理位置跟踪未返回正确的坐标

  15. 15

    使用HTML5地理位置在这里映射

  16. 16

    html5地理位置是否存在“ GPS状态已更改”事件?

  17. 17

    将HTML5地理位置结果发送回Node / Express Server

  18. 18

    无法获取html5地理位置坐标

  19. 19

    HTML5地理位置,点击时将经/纬度传递给PHP变量

  20. 20

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

  21. 21

    错误处理不适用于Chrome中的HTML5地理位置

  22. 22

    如何使用html / html5中的用户输入获取完整的地理位置详细信息?

  23. 23

    HTML5地理位置:如何在成功或错误回调后将lat和long值传递给AJAX调用

  24. 24

    为什么HTML5地理位置在不同的Web浏览器中具有不一致的错误行为

  25. 25

    实时检索地理位置(HTML5)

  26. 26

    关闭Openlayers 3地理位置

  27. 27

    无法添加Cordova 3.4.0地理位置插件

  28. 28

    在HTML5 Web Worker中使用地理位置

  29. 29

    HTML5中的精确地理位置如何工作?

热门标签

归档