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

StackOverflow https://stackoverflow.com/questions/1800990

Вопрос

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

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

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

Есть какие-нибудь идеи?

Спасибо

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

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

Это было полезно?

Решение

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

Файл должен быть 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

Другие советы

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

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

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

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

В 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.Это позволяет вам вручную обновлять свое местоположение в Google Latitude одним щелчком мыши, вместо того чтобы самостоятельно искать широту и долготу и вводить их в локальный файл.Моя статья на эту тему такова Заставьте Firefox использовать геолокацию из Google Latitude.

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

Ваше здоровье, МетаЭд

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

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

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

http://geolocation-mocker.phitherek.me

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top