我需要从Web客户端获取用户的位置。 由于Google在某些国家/地区受到限制(有关更多信息,请参见this question on Stackoverflow),因此以下代码将返回一个空对象(在浏览器控制台中, chrome,safari , etc 。):
navigator.geolocation
因此,我无法在地理位置API 中使用getCurrentLocation
和其他方法
我正在使用不同的方法来查找用户位置(基于IP),但是效果不佳。
还有另一种方法来查找用户位置坐标吗?
已更新(2020年7月12日):
由于误解,我已经更新了我的帖子。 有些人说它在HTTPS上有效。 所以我打开了Chrome浏览器并搜索StackOverflow(此网站是著名的HTTPS)
现在在控制台上,没有任何有关navigator.geolocation的数据:
答案 0 :(得分:4)
此功能仅在某些或所有支持的浏览器中的安全上下文( HTTPS )中可用。
我认为您正在尝试在无法使用的开发模式下使用此功能。 但是有一种方法可以在开发模式下解决此问题,那就是在您的开发模式下使用伪造的https。
已更新(2020年7月12日):
在Stackoverflow控制台中的我的地理位置对象(检查元素)。
地理位置对象实际上是空的,您应该看到其原型用户__proto__
。
如果您在项目中使用create-react-app,则应在 .env 文件中添加 HTTPS = true 。它对我有用。
答案 1 :(得分:1)
要在Web客户端上查找用户的地理位置,可以使用 HTML地理位置API 和 Google地理位置(refer this question on stackoverflow)。但是,始终需要在上允许用户知道其位置(浏览器位置权限),以在浏览器上获得用户的许可。如果用户不允许,Geolocation api将不会提供任何结果。
虽然允许用户使用,但某些与计算机上运行的Web设备不同的是,这些地理位置是由运行在计算机上的网络浏览器导致的,这些地理位置不精确甚至不紧密(没有内置GPS)。如果用户使用VPN或代理,那么找到精确的地理位置也是很麻烦的。
因此,作为摘要,我们将无法获得;
答案 2 :(得分:1)
答案 3 :(得分:-1)
您可以尝试使用geolocation API获取用户位置,并在不使用API的情况下使用该用户的IP地址进行备用。
try{
var triggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < triggers.length; i++) {
ScriptApp.deleteTrigger(triggers[i]);
}
ScriptApp.newTrigger('trigger_submissions_check')
.timeBased()
.onWeekDay(ScriptApp.WeekDay.SUNDAY)
.atHour(0)
.create();
Browser.msgBox("Successfully created a trigger");
} catch(e) {
MailApp.sendEmail("xxx@yyy.zzz","Classroom Project EXCEPTION in Trigger", e.message);
}
当然,这完全取决于您需要多少精度。 IP地址本地化的精度不高。