javascript - 地理定位在codepen中不起作用

Posted

技术标签:

【中文标题】javascript - 地理定位在codepen中不起作用【英文标题】:javascript - geolocation not working in codepen 【发布时间】:2016-06-28 03:24:13 【问题描述】:

我正在尝试在 codepen 中实现一个简单的天气应用程序。该应用程序在本地主机上运行良好 它请求使用 navigator.geolocation 的许可,如果被接受,它会显示天气, 但在 codepen 上,它甚至没有请求许可。

这是链接

http://codepen.io/asamolion/pen/BzWLVe

这里是JS函数

function getWeather() 
    'use strict';
    $('#getWeatherButton').hide();
    if (navigator.geolocation) 
        navigator.geolocation.getCurrentPosition(function (position) 
            var url = 'http://api.openweathermap.org/data/2.5/weather?APPID=53ac88144e6ee627ad0ed85277545ff9';
            //            var url = 'example.js';
            var apiCall = url + '&lat=' + position.coords.latitude + '&lon=' + position.coords.longitude;
            //            window.location.href = apiCall;
            $.getJSON(apiCall, function (json) 
                setSkycon(parseInt(json.weather[0].id, 10));
                $('#location').html(json.name + ', ' + json.sys.country);
                var temp = (Math.round((json.main.temp - 273.15) * 100) / 100);
                $('#temp').html(temp + '<span id="degree">&deg;</span><span id="FC" onclick="convert()">C</span>');
                $('#condition').html(json.weather[0].main);
            );

        );
    
;

谁能告诉我为什么 codepen 不请求许可?

【问题讨论】:

【参考方案1】:

我在同一个挑战中遇到了同样的问题。只需在你的 codepen 前面加上 https 而不是 http 就可以了。

像这样:

https://codepen.io/crownedjitter/pen/AXzdvQ

如果你想使用这个:

navigator.geolocation.getCurrentPosition();

在 Chrome 中。

【讨论】:

我使用了不同的地理位置 API。特别是 ip-api.com,因为我发现它更容易。无论如何,谢谢。 我发现 navigator.geolocation 要准确得多。例如,您的应用将我安置在距离我实际居住地 50 英里的城市。 @Darush 为我工作。【参考方案2】:

根据 Chrome 中的控制台:

getCurrentPosition() 和 watchPosition() 在不安全的来源上被弃用。要使用此功能,您应该考虑将您的应用程序切换到安全来源,例如 HTTPS。

这里有更多详细信息:https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins 本质上,Chrome 只想通过 HTTPS 发送位置信息。但是,为了让开发人员进行测试,他们将localhost 视为安全网络。希望这可以帮助!

【讨论】:

【参考方案3】:

从 Chrome 50 开始,Chrome 停止支持不安全协议上的地理定位。 https://developers.google.com/web/updates/2016/04/geolocation-on-secure-contexts-only

【讨论】:

以上是关于javascript - 地理定位在codepen中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

同时使用地理定位和地理编码 - Javascript

没有任何地图的Javascript地理定位[关闭]

在javascript中同步进行地理定位调用

地理定位功能中的 JavaScript 变量范围

在表单发布之前执行地理定位 javascript

如何每分钟重新加载地理定位 Javascript?