Несколько способов найти географическое местоположение: IP -адрес, GPS, WiFi, GSM/CDMA
Географический процесс приобретения :1. Пользователь открывает веб -приложение, которое необходимо получить географическое местоположение.
2. Приложение запрашивает браузер в географическое местоположение, и браузер выявляет запрос, чтобы спросить, делится ли пользователь географическим положением.
3. Предполагая, что пользователь позволяет это, браузер запросит соответствующую информацию из настройки.
4. Браузер отправляет соответствующую информацию на надежный сервер местоположения, а сервер возвращается в конкретное географическое место.
Реализация географического статуса HTML5 :1. Реализуйте технологию получения пользователей на основе браузера (не требуется поддержка бэкэнд)
2. Точно определить географическое местоположение пользователя (точность составляет до 10 м, в зависимости от оборудования)
3. Непрерывно отслеживать географическое местоположение пользователя
4. Информационная информация о местоположении с помощью Google Map или Baidu Map
API Geolocation используется для обмена текущей информацией о геолокации пользователя с доверенными сайтами, что включает в себя проблемы конфиденциальности и безопасности пользователя. Поэтому, когда сайт должен получить текущую геолокацию пользователя, браузер побуждает пользователя разрешить или отклонить.
Давайте сначала посмотрим, какие браузеры поддерживают API геолокации:
IE9.0+, FF3.5+, Safari5.0+, Chrome5.0+, Opera10.6+, iPhone3.0+, Android2.0+
Geolocation API существует в объекте Navigator и содержит только 3 метода:
1. GetCurrentPosition // Текущее местоположение
2. WatchPosition // Место мониторинга
3. clearWatch // Очистить мониторинг
navigator.geolocation.getCurrentPosition (…, функция (ошибка) {
Switch (error.code) {
case error.timeout:
Alert («Подключение времени, попробуйте еще раз»);
перерыв;
case error.permission_denied:
Alert («Вы отклонили использование службы обмена местоположением, запрос был отменен»);
перерыв;
case error.position_unavailable:
Alert (", извините, вы не можете предоставить услуги местоположения своей планете на данный момент");
перерыв;
}
});
WatchPosition похожа на трекер в паре с ClearWatch.
WatchPosition немного похожа на то, как работа SetInterval и ClearInterval.
var watchpositionid = navigator.geolocation.watchposition (success_callback, error_callback, options);
navigator.geolocation.clearwatch (WatchPositionId);
HTML 5 предоставляет серию API, таких как географическое местоположение для использования пользователями, что облегчает пользователям создание географических приложений LBS. Во -первых, в браузере, который поддерживает HTML 5, при открытии API он спросит, согласится ли пользователь использовать API, в противном случае он не будет включен, обеспечивая безопасность.
1. Включите, чтобы определить, поддерживает ли браузер API LBSфункция ISgeolocationApiaVailable ()
{
var location = "Нет, геолокация не поддерживается этим браузером.";
if (window.navigator.geolocation) {
местоположение = «Да, геолокация поддерживается этим браузером»;
}
предупреждение (местоположение);
}
В приведенном выше примере исключение также было поймано в методе DisplayError;
2. Получить географическое местоположение пользователяЭто делается с использованием GetCurrentPosition;
функция requestPosition () {
if (Nav == null) {
Nav = window.navigator;
}
if (vav! = null) {
var geoloc = nav.geolocation;
if (geoloc! = null) {
geoloc.getCurrentPosition (SuccessCallback);
}
еще {
оповещение («Geolocation API не поддерживается в вашем браузере»);
}
}
еще {
оповещение («Навигатор не найден»);
}
}
Когда географическое местоположение будет успешно получено, будет создан метод обратного вызова для обработки возвращаемого результата.
Function setlocation (val, e) {
document.getElementById (e) .value = val;
}
Функция успеха callback (позиция)
{
setlocation (position.coords.latitude, "Latitude"); setlocation (position.coords.longity, «долгота»);
}
3. Очень распространенный вопрос - как отслеживать изменение географического положения пользователей. Здесь мы суммируем два используемых API.1 Watchposition
Примеры следующие:
function alingForpositionUpdates () {
if (Nav == null) {
Nav = window.navigator;
}
if (vav! = null) {
var geoloc = nav.geolocation;
if (geoloc! = null) {
watchid = geoloc.watchposition (SuccessCallback);
} еще {
оповещение («Geolocation API не поддерживается в вашем браузере»);
}
} еще {
оповещение («Навигатор не найден»);
}
}
Затем в SuccessCallback вы можете установить новейшее географическое местоположение для отображения:
Функция успешно callback (position) {
setText (position.coords.latitude, "Latitude"); setText (position.coords.longity, «долгота»);
}
Если вы не хотите отслеживать в реальном времени, вы можете отменить его:
function clearWatch (watchId) {
window.navigator.geolocation.clearwatch (WatchId);
}
4. Как справиться со исключениямиКогда встречается исключение, вы можете его поймать:
if (geoloc! = null) {
geoloc.getCurrentPosition (SuccessCallback, errorCallback);
}
функция errorCallback (error) {
var message = "";
Switch (error.code) {
case error.permission_denied:
Сообщение = "У этого веб -сайта нет разрешения на использование"
+ "Geolocation API";
перерыв;
case error.position_unavailable:
Сообщение = «Текущая позиция не может быть определена.»;
перерыв;
case error.permission_denied_timeout:
Сообщение = "Текущая позиция не может быть определена"
+ «В течение указанного периода времени ожидания»;
перерыв;
}
if (message == "") {
var strerrorcode = error.code.tostring ();
Сообщение = "позиция не может быть определена из -за"
+ "неизвестная ошибка (код:" + strerrorcode + ").";
}
оповещение (сообщение);
}
5. Отображение местоположения на карте Google (при условии, что API карты Google установлен)функция getCurrentLocation ()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition (Showmyposition, DishRor);
}
еще
{
Alert («Нет, Geolocation API не поддерживается этим браузером»);
}
}
Функция Showmyposition (позиция)
{
var координаты = position.coords.latitude+","+position.coords.longity;
var map_url = "http://maps.googleapis.com/maps/api/staticmap?center="
+координаты+"& Zoom = 14 & size = 300x300 & sensor = false";
document.getElementbyId ("googlemap"). innerhtml = "<img src = '"+map_url+"' />";
}
Функциональный душ (ошибка)
{
Switch (error.code)
{
case error.permission_denied:
оповещение («На этом веб -сайте нет разрешения на использование API геолокации»)
перерыв;
case error.position_unavailable:
предупреждение («текущая позиция не может быть определена»)
перерыв;
case error.timeout:
предупреждение («текущая позиция не может быть определена в течение указанного периода времени».)
перерыв;
case error.unknown_error:
оповещение («позиция не может быть определена из -за неизвестной ошибки».)
перерыв;
}
}