Используя относительно простой код JavaScript, вы можете создавать веб -приложения, которые могут определить детали географического местоположения пользователя, включая широту, долготу и высоту. Некоторые веб -приложения могут даже предоставить навигационные функции, контролируя движение местоположений пользователей с течением времени, что также интегрирует такие системы MAP, как API GoogleMaps.
HTML5 предоставляет API Geolocation API для определения местоположения пользователя. Мы можем использовать эту функцию HTML5 для разработки приложений на основе информации о геолокации. Эта статья объединяет примеры, чтобы поделиться с вами, как использовать HTML5 и использовать интерфейсы Baidu и Google Map, чтобы получить точную информацию о географическом месте пользователей.
Geolocation - это новая особенность HTML5, поэтому можно запустить только в современных браузерах, которые поддерживают HTML5, особенно портативные устройства, такие как iPhone, где геолокация более точная. Во -первых, нам нужно определить, поддерживает ли браузер пользовательского устройства геолокацию, и если да, получить географическую информацию. Обратите внимание, что эта функция может нарушать конфиденциальность пользователя. Если пользователь не является согласием, информация о местоположении пользователя недоступна, поэтому, когда мы получаем доступ к приложению, мы будем привлечь, разрешать ли геолокация, и, конечно, мы можем разрешить разрешить.
- functiongetLocation () {
- if (navigator.geolocation) {
- navigator.geolocation.getCurrentPosition (Showposition, DishRor);
- }еще{
- оповещение (браузер не поддерживает геолокацию.);
- }
- }
Приведенный выше код показывает, что если пользовательское устройство поддерживает геолокацию, запустите метод getCurrentPosition (). Если GetCurrentPosition () работает успешно, объект координат возвращается в функцию, указанную в показании параметра. Второй параметр метода getCurrentPosition () используется для обработки ошибки, которая указывает функцию, которая работает, когда местоположение пользователя не может получить.
Давайте сначала посмотрим на функцию DeamlorRor (), который указывает обработку некоторых кодов ошибок при получении географического местоположения пользователя:
- functionshowerror (ошибка) {
- Switch (error.code) {
- caseError.permission_denied:
- оповещение (локализация не удалась, пользователь отказывается запрашивать геолокацию);
- перерыв;
- caseError.position_unavailable:
- предупреждение (локализация не удалась, информация о местоположении недоступна);
- перерыв;
- caseError.timeout:
- оповещение (местонахождение сбой, с просьбой получить тайм -аут местоположения пользователя);
- перерыв;
- caseError.unknown_error:
- предупреждение (локализация не удалась, система позиционирования не удалась);
- перерыв;
- }
- }
Давайте посмотрим на функцию Showposition () и назовем широту и долготу координат, чтобы получить широту и долготу пользователя.
- functionShowposition (позиция) {
- varlat = position.coords.latitude; // широта
- varlag = position.coords.longity; // долгота
- Alert ('lat:'+lat+', долгота:'+lag);
- }
Используйте интерфейсы Baidu Maps и Google Maps для получения адресов пользователя
Как мы понимаем, что геолокация HTML5 может получить широту и долготу пользователя, нам нужно преобразовать абстрактную широту и долготу в читаемую значимую информацию о реальном географическом месте пользователя. К счастью, карты Baidu и карты Google предоставляют интерфейсы в этом отношении. Нам нужно только передать информацию о широте и долготе, полученной HTML5 в интерфейс карты, и вернет географическое местоположение пользователя, включая провинциальную, муниципальную и региональную информацию, и даже подробную информацию о географическом месте, такую как улицы и номера дома.
Сначала мы определяем DIV для отображения географического местоположения на странице, и определяем ID#baidu_geo и id#google_geo соответственно. Нам просто нужно изменить ключевую функцию showposition (). Давайте сначала посмотрим на взаимодействие интерфейса карты Baidu. Мы отправляем информацию о широте и долготе в интерфейс карты Baidu через AJAX, и интерфейс вернет соответствующую провинциальную, муниципальную и уличную информацию. Интерфейс карты Baidu возвращает серию данных JSON, и мы можем отобразить необходимую информацию для div#baidu_geo в соответствии с нашими потребностями. Обратите внимание, что здесь используется библиотека jQuery, а файл библиотеки JQUERY должен быть загружен в первую очередь.
- functionShowposition (позиция) {
- varlatlon = position.coords.latitude+','+position.coords.longitude;
- // Байду
- varurl = http: //api.map.baidu.com/geocoder/v2/? Ak = c93b5178d7a8ebdb830b9b557abce78b & callback = renderReverse & location =+latlon+& output = json & pois = 0;
- $ .ajax ({
- Тип: получить,
- DataType: jsonp,
- URL: URL,
- beforesend: function () {
- $ (#baidu_geo) .html ('locating ...');
- },
- Успех: функция (json) {
- if (json.status == 0) {
- $ (#baidu_geo) .html (json.result.formatted_address);
- }
- },
- Ошибка: function (xmlhttprequest, textStatus, ошибка
- $ (#baidu_geo) .html (latlon+местоположение адреса не удалось);
- }
- });
- });
Давайте посмотрим на взаимодействие интерфейса Google Maps. Аналогичным образом, мы отправляем информацию о широте и долготе в интерфейс Google Maps через AJAX, и интерфейс вернет соответствующие детали провинции, города и улицы. Интерфейс Google Maps также возвращает серию данных JSON. Эти данные JSON более подробны, чем данные, возвращаемые интерфейсом Baidu Maps. Мы можем отобразить необходимую информацию для div#Google_geo в соответствии с нашими потребностями.
- functionShowposition (позиция) {
- varlatlon = position.coords.latitude+','+position.coords.longitude;
- varurl = 'http: //maps.google.cn/maps/api/geocode/json? latlng ='+latlon+'& language = cn';
- $ .ajax ({
- Тип: получить,
- URL: URL,
- beforesend: function () {
- $ (#Google_geo) .html ('местонахождение ...');
- },
- Успех: функция (json) {
- if (json.status == 'ok') {
- varresults = json.results;
- $.
- if (index == 0) {
- $ (#Google_geo) .html (array ['formatted_address']);
- }
- });
- }
- },
- Ошибка: function (xmlhttprequest, textStatus, ошибка
- $ (#Google_geo) .html (latlon+местоположение адреса не удалось);
- }
- });
- }
Приведенный выше код объединяет интерфейс карты Baidu и интерфейс Google Map в функцию ShowPosition () соответственно, и мы можем назвать его в соответствии с фактической ситуацией. Конечно, это просто простое приложение. Мы можем разработать много сложных приложений на основе этого простого примера. Рекомендуется использовать мобильный браузер для доступа к демонстрации демонстрации.