Как определить координаты своего местоположения с помощью смартфона
Грибной и ягодный сезон уже в разгаре, и бывает так, что, гуляя по лесу, вы понимаете, что заблудились. В этой статье мы хотим рассказать, как можно определить координаты своего местоположения с помощью смартфона (телефон с сенсорным экраном). Любой современный смартфон не только с успехом заменяет обычную карту, но и вполне может поспорить со специализированными GPS — устройствами. Приложения смартфона способны помочь найти дорогу, где бы вы не находились: в городе, за городом, в лесу или даже в торговом центре.
Большинство смартфонов работают под управлением операционных систем Apple iOS и Android.
1. Смартфон с операционной системой Apple iOS( iPhone или iPad)
Для определения координат своего местонахождения нужно зайти в приложение «Компас». Затем телефон нужно откалибровать (просто поводить по кругу, повращать в горизонтальной плоскости экраном вверх). Внизу (иногда вверху) появятся координаты. Если после калибровки координаты не появились, надо нажать на серую (на иных устройствах — синюю) точку в центре экрана и удерживать секунд 10. Внизу появятся координаты.
2. Смартфон с операционной системой Android
Для определения координат своего местонахождения нужно зайти в приложение «Карты». Если это приложение сразу не видно, то ищем приложение «Google». Далее в приложении «Google» находим приложение «Карты».
Справа на экране нажимаем на значок мишени и удерживаем секунд 10. Возможно, возникнет всплывающее окно «Чтобы улучшить работу приложения включите на устройстве геолокацию Google», и предложат варианты ответа: «Нет, спасибо», «ОК». Нажимаем «ОК». После этого в центре экрана появляется серая (или синяя) точка. Нажимаем на нее и удерживаем секунд 10. Рядом с точкой появляется значок местоположения, а вверху экрана координаты.
Как только у вас на смартфоне определились координаты, их нужно записать. В зависимости от марки смартфона, координаты могут быть в разном формате: 64.527603, 40.574157 (Android) или 64°31ʹ40ʹʹс.ш. 40°34ʹ10ʹʹ в.д. (Apple iOS).
Записать надо все точно, со всеми символами и знаками. А где записать, если вы в лесу? Можно взять палку и начертить координаты на земле, песке и т.д.
Теперь звоним в ГКУ Архангельской области «Региональная диспетчерская служба» по телефону 112. Звонок бесплатный, можно дозвониться с отрицательным балансом и даже без сим карты. Оператор 112 переведет Ваш звонок на диспетчера информационно-диспетчерского центра (ИДЦ) «Службы спасения им. И.А. Поливаного». Диспетчер проведет подробный опрос и определит ваше местонахождение на карте: точное — если вы предоставите координаты, или примерное — по описанию ваших передвижений по лесу. Далее вас будут выводить «по телефону», ориентируя по солнцу, ветру, природным признакам и линейным ориентирам.
И напоследок: научите ваших родственников, особенно пожилых людей и детей, а также знакомых и коллег определять свое местоположение при помощи смартфона. Эти знания могут им очень помочь в экстренной ситуации.
Как определить свои координаты с помощью смартфона, если нет связи
В современном мире большинство людей не представляют своей жизни без мобильных устройств. Уже выросло целое поколение, которое использовало смартфоны с самого детства. Геолокация с помощью систем GPS и ГЛОНАСС — одна из важнейших функций умных устройств, значительно упрощающих наши жизни. Эти функции позволяют нам не только легко ориентироваться в городе, но и воспользоваться помощью экстренных служб, если вы заблудились или попали в чрезвычайную ситуацию.
В этой статье разберем самые простые и действенные способы определить координаты точки, в которой вы находитесь, а в конце покажем видео о том, как это сделать.
Где я нахожусь?

В век мобильных устройств на него легко ответить, если у вас под рукой смартфон с функцией определения местоположения GPS или ГЛОНАСС. Для этого даже не обязательно наличие сотовой связи и интернета, ведь ваш телефон получает данные напрямую со спутников.
Знать, где вы находитесь, особенно важно, так как важный этап оказания помощи — вызов спасателей и медиков на место происшествия. И вполне логично всегда звучит удивление, когда выясняется, что диспетчеры служб спасения не могут принять ваши координаты. А вот спасатели и ваши родные не только смогут принять координаты, но и будут вас искать по ним. Если, например, вы заблудились в лесу. Особенно будут рады вашему местоположению добровольные спасатели. Они точно умеют их вводить в навигаторы. Давайте разбираться, как определить свои координаты.
1. Убедитесь, что службы геолокации включены
В первую очередь надо убедиться, что в вашем устройстве в принципе включена возможность определять ваше местоположение. По умолчанию обычно эти функции включены, но могут быть ситуации, когда по какой-то причине или даже случайно вы их отключили. В этом случае остальные шаги будут бесполезными.
1.1. Устройства на iOS
Меню Настройки — Конфиденциальность — Службы геолокации. Убедитесь, что службы включены. Пролистайте вниз до списка программ, которые могут использовать геопозицию и убедитесь, что им выданы соответствующие разрешения.

1.2. Устройства на Android
Опустите шторку экрана, если там есть значок GPS, нажмите и удерживайте, чтобы перейти к настройкам местоположения. Если значка нет, то перейдите в меню Настройки — Местоположение, или для более ранних версий Настройки — Защита и местоположение — Местоположение. Убедитесь, что доступ к данным местоположения разрешен: пункт меню «Доступ к моим геоданным», «Мои геоданные» или «Мое местоположение».

2. Универсальный способ определения координат
Способ сработает на любом устройстве с исправным приемником сигналов GPS или ГЛОНАСС, при условии, что функция определения геолокации включена. Будем использовать стандартные программы смартфонов. Способ в большинстве случаев будет работать без интернета и сотовой связи.
2.2. Устройства на iOS
Будем использовать приложение Компас, оно предустановлено на всех айфонах начиная с iPhone 4. Просто найдите приложение Компас и откройте его. Если приложение открывается в первый раз, система запросит разрешение использовать геолокацию. Выдайте это разрешение. В приложении внизу экрана вы увидите свои координаты. Обратите внимание, что этот способ определения координат не требует наличия связи и интернета!
Находим свои координаты в пиложении Компас на iPhone 4 — iPhone 6

Находим координаты в пиложении Компас на iPhone 6s и моложе

2.3. Устройства на Android
На андроид-устройствах предустановлено приложение Карты от Гугл. Откройте его. Если приложение открывается в первый раз, выдайте разрешения на использование геоданных. Нажмите на значок стрелки справа, определяющий ваше местоположение. На карте появится синяя точка там, где вы сейчас находитесь. Нажмите и удерживайте ее. На экране появятся координаты вашего текущего местоположения.
Находим координаты в Гугл-картах на Android 10, Xiaomi Mi A2 Lite

Находим координаты в Гугл-картах на Android 12, Xiaomi Redmi 9S

Находим координаты в Гугл-картах на Android 11, Samsung Galaxy A51

3. Альтернативные способы поиска своих координат
Если по каким-то причинам у вас нет описанных предустановленных приложений, или они не работают, есть другие варианты. Рассмотрим приложения Карты от Apple на айфонах, Яндекс-карты и Maps.me.
Общий принцип определения координат одинаковый: вам нужно нажать на кнопку поиска своего места на карте, затем нажать на показанную точку и в ее атрибутах найти координаты.
3.1. Приложение Карты от Apple на айфоне: ищем свое местоположение

3.2. Приложение Яндекс-карты на айфоне и андроиде
Откройте приложение, нажмите на значок, определяющий ваше местоположение. На экране появится красный кружок, в старых версиях с буквой «Я» внутри. Нажмите и удерживайте его. В новых версиях приложения вы получите координаты приложения на экране. В старых версиях нужно нажать кнопку «Отсюда», чтобы начать строить маршрут из этой точки. На экране построения маршрута появятся координаты текущего местоположения.

3.3. Приложение Maps.me на айфоне и андроиде

Видео-ролик: как найти свои координаты на разных телефонах
Вместо заключения
Эти способы кажутся простыми и интуитивно понятными, если вы активно пользуетесь всеми возможностями ваших устройств. Для менее продвинутых пользователей, особенно старшего возраста, определение текущих координат может оказаться непростой задачей.
При случае уточните у пожилых родственников, знают ли они об этих возможностях смартфонов. При необходимости помогите им разобраться в вопросе. Возможно, однажды это сохранит их нервы и здоровье.
Курсы первой помощи
Очные занятия в Санкт-Петербурге с опытными инструкторами
Последнее обновление: 16.04.2023
Получение текущих GPS координат
Как запросить текущие GPS координаты устройства? Я видел функцию getLasKnownLocation но ее название и применение говорит само за себя. Требуется получать (запрашивать у модуля) текущую локацию телефона
Отслеживать
задан 25 янв 2012 в 18:22
AndroidDev AndroidDev
1,684 2 2 золотых знака 28 28 серебряных знаков 58 58 бронзовых знаков
Вот отличная статья habrahabr.ru/post/122705
30 мая 2012 в 9:43
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
public class MyLocationActivity extends Activity implements LocationListener < private static final String TAG=MyLocationActivity.class.getName(); @Override public void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.main); LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); >@Override public void onLocationChanged(Location location) < if (location != null) < Log.d(TAG, "Широта="+location.getLatitude()); Log.d(TAG, "Долгота android.permission.ACCESS_FINE_LOCATION"/>
Отслеживать
ответ дан 25 янв 2012 в 18:34
81.2k 7 7 золотых знаков 72 72 серебряных знака 153 153 бронзовых знака
- android
- java
- gps
-
Важное на Мете
Связанные
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Урок 138. Определение местоположения. GPS координаты.
Android устройства могут предоставить нам данные по нашему текущему местоположению. Это, конечно, очень удобно и вовсю используется для, например, пользования картой, получения актуальной для вашей местности информации (прогноз погоды), всевозможных чекинов и пр.
Реализация этого всего вполне проста. Мы вешаем слушателя на провайдера и получаем данные. На данный момент есть два провайдера: GPS и Network.
GPS – тут все понятно, это данные с GPS-спутников.
Network – это координаты, которые можно получить через сотовую связь или WiFi. Для этого провайдера нужен инет.
Напишем простое приложение, которое будет запрашивать и отображать координаты.
Project name: P1381_Location
Build Target: Android 2.3.3
Application name: Location
Package name: ru.startandroid.develop.p1381location
Create Activity: MainActivity
В strings.xml добавим строки:
GPS Network Location settings
Экран main.xml:
Несколько TextView, в которые мы будем выводить данные, и кнопка для открытия настроек местоположения.
MainActivity.java:
package ru.startandroid.develop.p1381location; import java.util.Date; import android.app.Activity; import android.content.Intent; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.view.View; import android.widget.TextView; public class MainActivity extends Activity < TextView tvEnabledGPS; TextView tvStatusGPS; TextView tvLocationGPS; TextView tvEnabledNet; TextView tvStatusNet; TextView tvLocationNet; private LocationManager locationManager; StringBuilder sbGPS = new StringBuilder(); StringBuilder sbNet = new StringBuilder(); @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.main); tvEnabledGPS = (TextView) findViewById(R.id.tvEnabledGPS); tvStatusGPS = (TextView) findViewById(R.id.tvStatusGPS); tvLocationGPS = (TextView) findViewById(R.id.tvLocationGPS); tvEnabledNet = (TextView) findViewById(R.id.tvEnabledNet); tvStatusNet = (TextView) findViewById(R.id.tvStatusNet); tvLocationNet = (TextView) findViewById(R.id.tvLocationNet); locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); >@Override protected void onResume() < super.onResume(); locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000 * 10, 10, locationListener); locationManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, 1000 * 10, 10, locationListener); checkEnabled(); >@Override protected void onPause() < super.onPause(); locationManager.removeUpdates(locationListener); >private LocationListener locationListener = new LocationListener() < @Override public void onLocationChanged(Location location) < showLocation(location); >@Override public void onProviderDisabled(String provider) < checkEnabled(); >@Override public void onProviderEnabled(String provider) < checkEnabled(); showLocation(locationManager.getLastKnownLocation(provider)); >@Override public void onStatusChanged(String provider, int status, Bundle extras) < if (provider.equals(LocationManager.GPS_PROVIDER)) < tvStatusGPS.setText("Status: " + String.valueOf(status)); >else if (provider.equals(LocationManager.NETWORK_PROVIDER)) < tvStatusNet.setText("Status: " + String.valueOf(status)); >> >; private void showLocation(Location location) < if (location == null) return; if (location.getProvider().equals(LocationManager.GPS_PROVIDER)) < tvLocationGPS.setText(formatLocation(location)); >else if (location.getProvider().equals( LocationManager.NETWORK_PROVIDER)) < tvLocationNet.setText(formatLocation(location)); >> private String formatLocation(Location location) < if (location == null) return ""; return String.format( "Coordinates: lat = %1$.4f, lon = %2$.4f, time = %3$tF %3$tT", location.getLatitude(), location.getLongitude(), new Date( location.getTime())); >private void checkEnabled() < tvEnabledGPS.setText("Enabled: " + locationManager .isProviderEnabled(LocationManager.GPS_PROVIDER)); tvEnabledNet.setText("Enabled: " + locationManager .isProviderEnabled(LocationManager.NETWORK_PROVIDER)); >public void onClickLocationSettings(View view) < startActivity(new Intent( android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS)); >; >
В onCreate определяем TextView-компоненты и получаем LocationManager, через который и будем работать.
В onResume вешаем слушателя с помощью метода requestLocationUpdates. На вход передаем:
— тип провайдера: GPS_PROVIDER или NETWORK_PROVIDER
— минимальное время (в миллисекундах) между получением данных. Я укажу здесь 10 секунд, мне этого вполне хватит. Если хотите получать координаты без задержек – передавайте 0. Но учитывайте, что это только минимальное время. Реальное ожидание может быть дольше.
— минимальное расстояние (в метрах). Т.е. если ваше местоположение изменилось на указанное кол-во метров, то вам придут новые координаты.
— слушатель, объект locationListener, который рассмотрим ниже
Также здесь обновляем на экране инфу о включенности провайдеров.
В onPause отключаем слушателя методом removeUpdates.
locationListener – слушатель, реализует интерфейс LocationListener с методами:
onLocationChanged – новые данные о местоположении, объект Location. Здесь мы вызываем свой метод showLocation, который на экране отобразит данные о местоположении.
onProviderDisabled – указанный провайдер был отключен юзером. В этом методе вызываем свой метод checkEnabled, который на экране обновит текущие статусы провайдеров.
onProviderEnabled – указанный провайдер был включен юзером. Тут также вызываем checkEnabled. Далее методом getLastKnownLocation (он может вернуть null) запрашиваем последнее доступное местоположение от включенного провайдера и отображаем его. Оно может быть вполне актуальным, если вы до этого использовали какое-либо приложение с определением местоположения.
onStatusChanged – изменился статус указанного провайдера. В поле status могут быть значения OUT_OF_SERVICE (данные будут недоступны долгое время), TEMPORARILY_UNAVAILABLE (данные временно недоступны), AVAILABLE (все ок, данные доступны). В этом методе мы просто выводим новый статус на экран.
Провайдеры включаются и отключаются в настройках системы. Тем самым, просто определяется доступен ли провайдер для получения от него координат. Чуть позже увидим, как можно отправить юзера в эти настройки. Программное включение/выключение провайдеров через стандартные методы недоступно.
Далее идут свои методы.
showLocation на вход берет Location, определяет его провайдера методом getProvider и отображает координаты в соответствующем текстовом поле.
formatLocation на вход берет Location, читает из него данные и форматирует из них строку. Какие данные он берет: getLatitude – широта, getLongitude – долгота, getTime – время определения.
checkEnabled определяет включены или выключены провайдеры методом isProviderEnabled и отображает эту инфу на экране.
Метод onClickLocationSettings срабатывает по нажатию кнопки Location settings и открывает настройки, чтобы пользователь мог включить или выключить провайдер. Для этого используется Intent с action = ACTION_LOCATION_SOURCE_SETTINGS.
Осталось в манифесте прописать разрешение на определение координат — ACCESS_FINE_LOCATION, которое позволит нам использовать и Network и GPS. Также существует разрешение ACCESS_COARSE_LOCATION, но оно дает доступ только к Network-провайдеру.
С кодом все, давайте смотреть, что получилось. Все сохраняем и запускаем приложение.
У меня на планшете сейчас выключен GPS, выключен WiFi, вставлена симка и выключен мобильный интернет.
Запускаю приложение и вижу такую картину:

GPS выключен, Network включен. Но инета нет, поэтому Network мне ничего не дает. Надо включить либо мобильный инет, либо WiFi.
Я включаю WiFi. Проходит секунд 15-20 и инфа с Network пошла

Видим широту, долготу и время.
Напомню, что мы ставили минимальную скорость обновления – 10 сек. Но у меня провайдер Network выдает данные не чаще, чем раз в минуту.
Теперь давайте включим GPS. Для этого мы специально повесили кнопку Location settings, которую надо будет нажать пользователю, чтобы перейти в настройки. Жмем кнопку.

Видим, что GPS выключен, а Network включен. Наше приложение показывало все верно.
Разумеется, GPS можно включать и выключать через быстрые настройки системы (справа сверху). Но не все пользователи об этом знают. А тут мы их точно направим.
Включаем GPS и жмем Назад, чтобы вернуться в приложение.

GPS теперь показывает что он включен, ждем координаты. Для этого имеет смысл подойти к окну, больше вероятности, что поймаем сигнал.
В итоге сигнал пойман и получен результат.

У GPS через какое-то время включился статус 2 (AVAILABLE).

А у Network тишина со статусом. Не знаю, нормально это или нет.
Если с GPS сигналом все ок, то каждые 10 сек вы будете получать инфу о вашем местоположении. Если убрать планшет от окна, получим плохой сигнал: данные могут приходить реже и статус у меня иногда меняется на 1 (TEMPORARILY_UNAVAILABLE).
Прочее
Есть еще третий тип провайдера — PASSIVE_PROVIDER. Сам по себе этот провайдер никакие данные не вернет. Но повесив на него слушателя, вы сможете получать данные о местоположении, когда кто-то еще в системе пытается определить местоположение через обычные провайдеры. Система будет дублировать результаты и вам.
Метод getAllProviders вернет вам список всех доступных провайдеров. Метод getProviders(boolean enabledOnly) вернет либо все, либо только включенные.
Объект Location кроме координат, времени и провайдера имеет еще несколько атрибутов, которые могут прийти и пустыми:
getAccuracy – точность показания в метрах
getAltitude – высота над уровнем моря в метрах
getSpeed – скорость движения в м/с
getBearing – насколько я понял, это угол, на который текущая траектория движения отклоняется от траектории на север. Он же азимут.
Местоположение можно протестировать и через AVD эмулятор. Для этого надо в Eclipse открыть DDMS (Window > Open Perspective > DDMS) и выбрать вкладку Emulator Control. Внизу будет вкладка Manual, на которой есть поля для ввода координат и кнопка отправки.
На следующем уроке:
— создаем приложение с картой
— настраиваем карту и обрабатываем ее события
— программно меняем положение камеры
Присоединяйтесь к нам в Telegram:
— в канале StartAndroid публикуются ссылки на новые статьи с сайта startandroid.ru и интересные материалы с хабра, medium.com и т.п.
— в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Compose, Kotlin, RxJava, Dagger, Тестирование, Performance
— ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня
