Я занимаюсь разработкой мобильного веб-сайта, там я интегрировал Google Maps, мне нужно заполнить поле «От» Google Maps динамически.
Можно ли получить местоположение GPS из веб-браузера и динамически заполнить его в поле «От» карты Google?
Я занимаюсь разработкой мобильного веб-сайта, там я интегрировал Google Maps, мне нужно заполнить поле «От» Google Maps динамически.
Можно ли получить местоположение GPS из веб-браузера и динамически заполнить его в поле «От» карты Google?
Ответы:
Если вы используете API геолокации , это будет так же просто, как использовать следующий код.
navigator.geolocation.getCurrentPosition(function(location) {
console.log(location.coords.latitude);
console.log(location.coords.longitude);
console.log(location.coords.accuracy);
});
Вы также можете использовать API определения местоположения клиентов Google .
Эта проблема обсуждалась в разделе Можно ли определить местоположение GPS мобильного браузера? и получить данные о местоположении из мобильного браузера . Вы можете найти больше информации там.
Чтобы дать более конкретный ответ. HTML5 позволяет вам получать географические координаты, и это делает довольно приличную работу. В целом, поддержка геолокации в браузере довольно хорошая, все основные браузеры, кроме ie7 и ie8 (и opera mini). IE9 делает свою работу, но худший результат. Оформить заказ caniuse.com:
http://caniuse.com/#search=geol
Также вам необходимо одобрение вашего пользователя для доступа к его местоположению, поэтому убедитесь, что вы проверили это и дали некоторые приличные инструкции на случай, если он выключен. Специально для Iphone включение разрешений для Safari немного громоздко.
Используйте это, и вы найдете всю информацию на 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>
Существует API GeoLocation , но поддержка браузеров в настоящее время довольно слабая. Большинство сайтов, которые заботятся о таких вещах, используют базу данных GeoIP (с обычными оговорками о неточности такой системы). Вы также можете посмотреть на сторонние сервисы, требующие взаимодействия с пользователем, такие как FireEagle .
наблюдаемый
/*
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();
}
Давайте использовать последние функции жирной стрелки :
navigator.geolocation.getCurrentPosition((loc) => {
console.log('The location in lat lon format is: [', loc.coords.latitude, ',', loc.coords.longitude, ']');
})