Поставщик геолокации для Firefox, который допускает ручной ввод
-
05-07-2019 - |
Вопрос
Существуют ли какие-либо простые способы переопределить поведение по умолчанию 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
Я надеюсь, что этот инструмент окажется полезным.