【问题标题】:Get position coordinates for an ajax request获取 ajax 请求的位置坐标
【发布时间】:2013-04-12 01:59:51
【问题描述】:

目前正在开发适用于 iOS 的天气网络应用程序。我正在尝试获取用户的坐标并将纬度和经度放在我的 Ajax 请求中(在 api Wunderground 上)。

这是我的代码(编辑):

<script type="text/javascript">
       $(document).ready(function() {

       navigator.geolocation.getCurrentPosition(getLocation, unknownLocation);

         function getLocation(pos)
         {
           var lat = pos.coords.latitude;
           var lon = pos.coords.longitude;

            $.ajax({
                     url : "http://api.wunderground.com/api/ApiId/geolookup/conditions/q/"+ lat +","+ lon +".json",
                     dataType : "jsonp",

                     success : function(parsed_json) {
                        var location = parsed_json['location']['city'];
                        var temp_f = parsed_json['current_observation']['temp_f'];
                        alert("Current temperature in " + location + " is: " + temp_f);
                     }
                  });
         }
         function unknownLocation()
         {
           alert('Could not find location');
         }
       });
    </script>

如您所见,我“简单地”必须创建 2 个变量 lat 和 lon 并将它们添加到我的请求中。我尝试了很多变体,但我无法让这段代码工作。

知道我做错了什么吗?

非常感谢!

【问题讨论】:

  • 您是否注册了 API 密钥?看起来你需要一个。
  • 我有一个,我只是把它隐藏在我的代码中,因为你不需要它:)

标签: javascript jquery ajax location coords


【解决方案1】:

您的变量声明位于 .ajax 调用的中间,使 JavaScript 结构无效。另外,我不确定你为什么使用“function($)”,通常使用 jQuery,$ 是保留的,不应该用作函数参数。

   <script type="text/javascript">
$(document).ready(function() {
    navigator.geolocation.getCurrentPosition(onPositionUpdate);
});


function onPositionUpdate(position) {
    var lat = position.coords.latitude;
    var lon = position.coords.longitude;
    $.ajax({
        url : "http://api.wunderground.com/api/ApiId/geolookup/conditions/q/"+lat+","+lon+".json",
        dataType : "jsonp",
        success : function(parsed_json) {
            var location = parsed_json['location']['city'];
            var temp_f = parsed_json['current_observation']['temp_f'];
            alert("Current temperature in " + location + " is: " + temp_f);
        }
    });
}
</script>

【讨论】:

  • 我有一个错误:未捕获的引用错误:未定义位置。我以为它是 iOS 中实现的变量??
  • 需要使用getCurrentPosition()方法获取位置:digimantra.com/howto/…
  • 查看 Firebug 或 Web Inspector 中的 parsed_json 响应以查看返回的属性。对我来说,在 parsed_json.response.error.description 中,它给了我“这个键不存在”。我认为您需要在您使用的 url 中提供一个 API 密钥作为属性。
  • 如果您没有 API 密钥,您可以在 api.wunderground.com/weather/api 注册一个。一旦您注册了 API 密钥,他们应该提供有关如何将其合并到您的 http 请求中的说明。
猜你喜欢
  • 2022-08-07
  • 2011-08-03
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多