是否有任何简单的方法可以覆盖地理定位 api的默认行为并硬编码您当前的位置?
我认为这对于测试和隐私原因(提供虚假位置数据)很有用
我以为有一个附加的,但我似乎找不到。现在唯一的选择似乎是将 about:config geo.wifi.url 更改为一些替代网络服务,我认为这过于复杂。
有任何想法吗?
谢谢
理想情景
有人实现了一个显示谷歌地图的插件,我可以选择一个新的默认位置。
是否有任何简单的方法可以覆盖地理定位 api的默认行为并硬编码您当前的位置?
我认为这对于测试和隐私原因(提供虚假位置数据)很有用
我以为有一个附加的,但我似乎找不到。现在唯一的选择似乎是将 about:config geo.wifi.url 更改为一些替代网络服务,我认为这过于复杂。
有任何想法吗?
谢谢
理想情景
有人实现了一个显示谷歌地图的插件,我可以选择一个新的默认位置。
最简单的方法是导航到about:config
然后在过滤器框中输入geo.wifi.uri
,双击显示的唯一配置行,然后在替换后输入下面的值,xxx
并使用从http://yyy
等服务获得的坐标www.getlatlon.com/:
data:application/json,{"location":{"latitude":xxx,"longitude":yyy,"accuracy":10}}
这个技巧不需要任何附加组件或本地/托管文件。确保该值没有任何空格并且在一行上!
geo.wifi.uri 不需要是网络服务。您还可以使用 file://... 将其设置为本地 uri
该文件应该是一个 json 文件,内容如下:
{"location": {
"latitude": 48.777025000000002,
"longitude": 9.1713909999999998,
"accuracy": 10.0}}
更新: 对于 Firefox 9+,格式已更改:
{
"status": "OK",
"accuracy": 10.0,
"location": {"lat": 48.777, "lng": 9.171}
}
或者您可以将它们结合起来以支持两者:
{
"status": "OK",
"accuracy": 10.0,
"location": {
"lat": 48.777,
"lng": 9.171,
"latitude": 48.777,
"longitude": 9.171,
"accuracy": 10.0
}
}
更新:看起来手动设置此首选项被假设 Google 服务的提供商阻止。请参阅错误 716453 更新 2: geo.wifi.uri 不是 geo.wifi.url
Geolocater是一个实验性的附加组件,可让您编辑您的地理位置。
在 Chrome 中,您可以使用手动地理定位chrome 扩展。它会让您以图形方式选择手动位置。
嗯,你不能navigator.geolocation
直接模拟——也许你可以重构你的代码,使用它来使用另一个对象——比如customGeoLocation
.
在生产中,您可以设置customGeoLocation
并navigator.geolocation
在测试中使用您使用的任何功能的模拟实现。
编辑:原来您可以替换navigator.geolocation
对象上的函数,但如果您使用需要创建模拟对象的模拟库(如 JsMock),这仍然无用。因此,您将无法navigator.geolocation
用模拟替换。
你可以用这种方式嘲笑自己:
var getCurrentPositionCalled = false;
navigator.geolocation.getCurrentPosition = function() {
getCurrentPositionCalled = true;
};
//Your app code here
//...
assert(getCurrentPositionCalled);
我已将 Google Latitude 连接到 Firefox 地理定位。这使您可以通过单击鼠标手动更新您在谷歌纵横中的位置,而不是自己查找您的纬度和经度并将其输入到本地文件中。我关于这个主题的文章是Make Firefox Take Geolocation From Google Latitude。
该解决方案需要少量的服务器端编码(我在文章中提供了源代码),但我暂时将此代码作为您可以使用的免费实时服务运行。
干杯,元编辑
我创建了一个简单的 Web 应用程序,它作为一个地理定位端点,您可以将浏览器的 geo.wifi.uri 指向。它与 Google API 规范兼容。要使用它,只需输入以下内容,将 [latitude] 和 [longitude] 替换为所需的值:
http://geolocation-mocker.phitherek.me/geolocate/[latitude]/[longitude]
它应该可以工作。要检查服务是否启动,请导航至
http://geolocation-mocker.phitherek.me
并检查 HTML 页面是否正确显示。您可以在以下位置找到这个简单应用程序的源代码
https://github.com/Phitherek/geolocation-mocker
我希望这个工具将被证明是有用的。