Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 允许手动输入的Firefox地理位置提供程序_Javascript_Geolocation_Firefox Addon_Firefox3.5 - Fatal编程技术网

Javascript 允许手动输入的Firefox地理位置提供程序

Javascript 允许手动输入的Firefox地理位置提供程序,javascript,geolocation,firefox-addon,firefox3.5,Javascript,Geolocation,Firefox Addon,Firefox3.5,有没有简单的方法可以覆盖的默认行为,只是硬编码您的当前位置 我认为这对于测试和出于隐私原因(提供虚假位置数据)都很有用 我以为有一个附加的,但我似乎找不到一个。现在唯一的选项似乎是改变了:On:CONFIG GEO.WiF.URL到一些我认为过于复杂的WebService。 有什么想法吗 谢谢 理想情景 有人在谷歌地图出现的地方实现了一个插件,我可以选择一个新的默认位置。Hmmm,你不能直接模拟navigator.geolocation——也许你可以重构你的代码,使用它来使用另一个对象——比如c

有没有简单的方法可以覆盖的默认行为,只是硬编码您的当前位置

我认为这对于测试和出于隐私原因(提供虚假位置数据)都很有用

我以为有一个附加的,但我似乎找不到一个。现在唯一的选项似乎是改变了:On:CONFIG GEO.WiF.URL到一些我认为过于复杂的WebService。 有什么想法吗

谢谢

理想情景


有人在谷歌地图出现的地方实现了一个插件,我可以选择一个新的默认位置。

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扩展。