Поставщик геолокации для Firefox, который позволяет вводить вручную

Есть ли какие-либо простые способы переопределить поведение по умолчанию geolocation api и просто скорректировать свое текущее местоположение?

Я думаю, что это было бы полезно для тестирования и для соображений конфиденциальности (предоставление фальшивых данных о местоположении)

Я думал, что есть дополнение для этого, но я не могу найти его. Теперь только опция теперь меняет about: config geo.wifi.url на некоторый альтернативный веб-сервис, который я считаю чрезмерно сложным.

Любые идеи?

Спасибо

Идеальный сценарий

Кто-то реализует надстройку, в которой отображается карта google, и я могу выбрать новое местоположение по умолчанию.

Ответы

Ответ 1

Geo.wifi.uri не обязательно должен быть веб-сервисом. Вы также можете установить его на локальный uri с файлом://...

Файл должен быть json файлом с таким содержимым:

{"location": {
              "latitude": 48.777025000000002, 
              "longitude": 9.1713909999999998, 
              "accuracy": 10.0}}

Update: Для 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

Ответ 2

Самый простой способ - перейти к about:config, а затем в поле фильтра ввести geo.wifi.uri, дважды щелкнуть единственную строку конфигурации, которая появится, и ввести значение ниже после замены xxx и yyy с координатами, которые вы получаете от службы, например http://www.getlatlon.com/:

data:application/json,{"location":{"latitude":xxx,"longitude":yyy,"accuracy":10}}

Этот трюк не требует никаких надстроек или локальных/размещенных файлов. Убедитесь, что значение не имеет пробелов и находится на одной строке!

Ответ 3

Geolocater - экспериментальное дополнение, позволяющее редактировать геолокацию.

Ответ 4

В Chrome вы можете использовать расширение Manual Geolocation. Это позволит вам графически выбрать местоположение вашего руководства.

Ответ 5

Хммм, вы не можете издеваться над navigator.geolocation напрямую - возможно, вы можете реорганизовать свой код, который использует его для использования другого объекта - скажем customGeoLocation.

В процессе производства вы можете просто установить customGeoLocation в navigator.geolocation, а в тестах использовать макетную реализацию любой функции, которую вы используете.

EDIT:. Вы можете заменить функции на объект navigator.geolocation, но это все еще бесполезно, если вы используете библиотеку mock (например, JsMock), которая должна создавать макет. Таким образом, вы не сможете заменить navigator.geolocation макетом.

Вы можете издеваться над этим так:

var getCurrentPositionCalled = false;
navigator.geolocation.getCurrentPosition = function() { 
  getCurrentPositionCalled = true; 
};

//Your app code here
//...
assert(getCurrentPositionCalled);

Ответ 6

Я подключил Google Latitude к геолокации Firefox. Это позволяет вам вручную обновлять свое местоположение в Google Локаторе одним щелчком мыши, вместо того, чтобы самостоятельно искать свою широту и долготу и вводить их в локальный файл. Моя статья на эту тему Сделать Firefox использовать геолокацию из широты Google.

Решение потребовало небольшого количества серверного кодирования (я предоставляю исходный код в статье), но в настоящее время я использую этот код как бесплатную живую услугу, которую вы можете использовать.

Приветствия, MetaEd

Ответ 7

Я создал простое веб-приложение, которое служит конечной точкой геолокации, которую вы можете указать браузеру geo.wifi.uri. Он совместим со спецификацией API Google. Чтобы использовать его, просто введите следующее, заменив [широту] и [долготу] на нужные значения:

http://geolocation-mocker.phitherek.me/geolocate/[latitude]/[longitude]

и он должен работать. Чтобы проверить, работает ли служба, перейдите к

http://geolocation-mocker.phitherek.me

и проверьте правильность отображения страницы HTML. Исходный код этого простого приложения можно найти в

https://github.com/Phitherek/geolocation-mocker

Я надеюсь, что этот инструмент окажется полезным.