Javascript 允许手动输入的Firefox地理位置提供程序
有没有简单的方法可以覆盖的默认行为,只是硬编码您的当前位置 我认为这对于测试和出于隐私原因(提供虚假位置数据)都很有用 我以为有一个附加的,但我似乎找不到一个。现在唯一的选项似乎是改变了:On:CONFIG GEO.WiF.URL到一些我认为过于复杂的WebService。 有什么想法吗 谢谢 理想情景Javascript 允许手动输入的Firefox地理位置提供程序,javascript,geolocation,firefox-addon,firefox3.5,Javascript,Geolocation,Firefox Addon,Firefox3.5,有没有简单的方法可以覆盖的默认行为,只是硬编码您的当前位置 我认为这对于测试和出于隐私原因(提供虚假位置数据)都很有用 我以为有一个附加的,但我似乎找不到一个。现在唯一的选项似乎是改变了:On:CONFIG GEO.WiF.URL到一些我认为过于复杂的WebService。 有什么想法吗 谢谢 理想情景 有人在谷歌地图出现的地方实现了一个插件,我可以选择一个新的默认位置。Hmmm,你不能直接模拟navigator.geolocation——也许你可以重构你的代码,使用它来使用另一个对象——比如c
有人在谷歌地图出现的地方实现了一个插件,我可以选择一个新的默认位置。Hmmm,你不能直接模拟
navigator.geolocation
——也许你可以重构你的代码,使用它来使用另一个对象——比如customGeoLocation
在生产环境中,您只需将customGeoLocation
设置为navigator即可。geolocation
在测试中使用您使用的任何功能的模拟实现
EDIT:事实证明,您可以替换navigator.geolocation
对象上的函数,但如果您使用的是需要创建模拟对象的模拟库(如JsMock),那么这仍然是无用的。因此,您将无法用模拟来替换navigator.geolocation
你可以这样嘲笑自己:
var getCurrentPositionCalled = false;
navigator.geolocation.getCurrentPosition = function() {
getCurrentPositionCalled = true;
};
//Your app code here
//...
assert(getCurrentPositionCalled);
geo.wifi.uri不需要是Web服务。您还可以使用将其设置为本地urifile://... 该文件应为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服务的提供商阻止。看见
更新2:geo.wifi.uri不是geo.wifi.url是一个实验性的附加组件,可以让你编辑地理位置。我已经将谷歌纬度连接到Firefox地理位置。这使您可以通过单击鼠标手动更新您在Google Latitude中的位置,而不是自己查找纬度和经度并将其键入本地文件。我关于这个主题的文章是 该解决方案需要少量的服务器端编码(我在本文中提供了源代码),但我目前正在将此代码作为免费的实时服务运行,您可以使用它
干杯,MetaEd最简单的方法是导航到
关于:配置
,然后在过滤器框中输入geo.wifi.uri
,双击显示的唯一配置行,并在使用从以下服务获得的坐标替换xxx
和yyy
后输入以下值:
data:application/json,{“位置”:{“纬度”:xxx,“经度”:yyy,“精度”:10}
这个技巧不需要任何附加组件或本地/托管文件。确保该值不带任何空格,并且在一行上 在Chrome中,您可以使用Chrome扩展。它可以让您以图形方式选择手动位置。我创建了一个简单的web应用程序,作为地理位置端点,您可以将浏览器的geo.wifi.uri指向该端点。它与googleapi规范兼容。要使用它,只需输入以下内容,用所需的值替换[纬度]和[经度]:
http://geolocation-mocker.phitherek.me/geolocate/[latitude]/[longitude]
它应该会起作用。要检查服务是否已启动,请导航到
并检查HTML页面是否正确显示。您可以在以下位置找到此简单应用程序的源代码:
我希望此工具将被证明是有用的。作为参考,此字段的默认值为
geoloc://www.google.com/loc/json
在Firefox 10+中使用这个数据:application/json,{“location”:{“lat”:xxx,“lng”:yyy,“accurity”:10}
实际上,现在是数据:application/json,{“location”:{“lat”:xxx,“lng”:yyy},“accurity”:10}
这样一个理想的场景已经实现了——chrome网站上现在有一个手动地理定位chrome扩展。