Получить местоположение GPS из веб-браузера


165

Я занимаюсь разработкой мобильного веб-сайта, там я интегрировал Google Maps, мне нужно заполнить поле «От» Google Maps динамически.

Можно ли получить местоположение GPS из веб-браузера и динамически заполнить его в поле «От» карты Google?


2
Какие мобильные телефоны вы собираетесь поддерживать?
Роуланд Шоу

я хочу поддерживать все мобильные браузеры, но i-phone является главным приоритетом
Ганеш

Возможно, вам лучше написать собственное приложение, так как оно позволит более тесно интегрироваться с оборудованием, где оно доступно
Роуланд Шоу,

16
если потребность касается только местоположения, то нативное приложение сильно излишне. iOS - не единственный мобильный телефон, это всего лишь приоритет.
Гонсало Вейга

Ответы:


195

Если вы используете API геолокации , это будет так же просто, как использовать следующий код.

navigator.geolocation.getCurrentPosition(function(location) {
  console.log(location.coords.latitude);
  console.log(location.coords.longitude);
  console.log(location.coords.accuracy);
});

Вы также можете использовать API определения местоположения клиентов Google .

Эта проблема обсуждалась в разделе Можно ли определить местоположение GPS мобильного браузера? и получить данные о местоположении из мобильного браузера . Вы можете найти больше информации там.


Упоминается ли еще API Google Client Location? Предоставленная ссылка идет на Google Loader
Shane N

1
Я не вижу его на этой странице как один из доступных API. - Вы можете использовать Google Локатор API: code.google.com/apis/latitude - С его помощью можно получить текущее местоположение клиента: code.google.com/apis/latitude/v1/…
dochoffiday

1
Для будущих читателей точность измеряется в метрах .
johnnyRose

Хай, мы можем разрешить общий доступ к местоположению автоматически с помощью кодирования
Мистер Томар,

2
Требует ли это использования вашего местоположения?
Джек

21

Чтобы дать более конкретный ответ. HTML5 позволяет вам получать географические координаты, и это делает довольно приличную работу. В целом, поддержка геолокации в браузере довольно хорошая, все основные браузеры, кроме ie7 и ie8 (и opera mini). IE9 делает свою работу, но худший результат. Оформить заказ caniuse.com:

http://caniuse.com/#search=geol

Также вам необходимо одобрение вашего пользователя для доступа к его местоположению, поэтому убедитесь, что вы проверили это и дали некоторые приличные инструкции на случай, если он выключен. Специально для Iphone включение разрешений для Safari немного громоздко.


dotnetcurry.com/aspnet-mvc/782/… - это удобный справочник для реализации в среде asp.net mvc
Вальтер де Йонг,

13

Используйте это, и вы найдете всю информацию на http://www.w3schools.com/html/html5_geolocation.asp

<script>
var x = document.getElementById("demo");
function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    } else {
        x.innerHTML = "Geolocation is not supported by this browser.";
    }
}
function showPosition(position) {
    x.innerHTML = "Latitude: " + position.coords.latitude + 
    "<br>Longitude: " + position.coords.longitude; 
}
</script>

1
Просто обратите внимание: getCurrentPosition () и watchPosition () больше не работают с небезопасными источниками. Чтобы использовать эту функцию, вы должны рассмотреть вопрос о переключении вашего приложения на безопасный источник, например HTTPS.
user2589273

4

Существует API GeoLocation , но поддержка браузеров в настоящее время довольно слабая. Большинство сайтов, которые заботятся о таких вещах, используют базу данных GeoIP (с обычными оговорками о неточности такой системы). Вы также можете посмотреть на сторонние сервисы, требующие взаимодействия с пользователем, такие как FireEagle .


1
Большое спасибо за ваш быстрый ответ. если возможно, не могли бы вы дать мне еще несколько советов ...
Ганеш

2

наблюдаемый

/*
  function geo_success(position) {
    do_something(position.coords.latitude, position.coords.longitude);
  }

  function geo_error() {
    alert("Sorry, no position available.");
  }

  var geo_options = {
    enableHighAccuracy: true,
    maximumAge        : 30000,
    timeout           : 27000
  };

  var wpid = navigator.geolocation.watchPosition(geo_success, geo_error, geo_options);
  */
  getLocation(): Observable<Position> {
    return Observable.create((observer) => {
      const watchID = navigator.geolocation.watchPosition((position: Position) => {
        observer.next(position);
      });
      return () => {
        navigator.geolocation.clearWatch(watchID);
      };
    });
  }

  ngOnDestroy() {
    this.sub.unsubscribe();
  }

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.