Возможно ли расстояние между текущим местоположением и улицей, проспектом или областью?

Все решения о расчете расстояния находятся между двумя точками. Мой вопрос: есть ли способ рассчитать расстояние до определенной улицы?

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

Здесь у меня есть только одна точка (мое местоположение), в то время как точка назначения является вариантом и зависит от моего текущего местоположения. То, что я знаю о назначении, находится на определенной улице или в районе, так как рассчитать его?

Другой случай для этой проблемы, предположим, что я проехал 10 метров от определенной улицы длиной 1 км. Я должен уметь подсчитать, что мое расстояние составляет 10 метров от начала этой улицы, после этого расстояния, когда выходите на улицу, и за каждый метр, который я просыпался на 1 км, он должен находиться на расстоянии 0 метров от моего местоположения до этой улицы. Когда я выхожу из другой стороны, расстояние должно пересчитываться снова с конечной точки этой улицы не с начальной точки, поэтому, когда я ухожу от нее около 5 метров, она должна рассчитать ее как 5 метров, а не 1005 метров.


Вот пример примера на картах google:

Сначала посмотрим на Уолл-стрит в городе Нью-Йорк на карте.

Введите описание изображения здесь

Таким образом, цель назначения – Уолл-стрит. Теперь, если ваше текущее местоположение на кресте Джон-стрит с Уотер-стрит, моя задача – довести вас до ближайшей точки на Уолл-стрит, и путь будет таким, как этот (режим ходьбы).

Введите описание изображения здесь

Однако, если вы находитесь на кресте Брод-стрит с Бивер-стрит, то пункт назначения до ближайшей точки на Уолл-стрит будет похож на этот (режим ходьбы):

Введите описание изображения здесь

Это моя проблема


Является ли это возможным? Предлагают ли для этого новые API-интерфейсы?

Любые решения или идеи?

Эй, да, вы получите широту и долготу поискового места здесь. Я приведу пример, как вы можете получить.

Вы можете использовать автозаполнение google для поиска в любом месте. Затем введите placeid из autocomplete api и передайте его в подробности api.

https://maps.googleapis.com/maps/api/place/autocomplete/json

https://maps.googleapis.com/maps/api/place/details/json

См. Прохождение параметров

//Google Autocomplete @GET(ApiConstants.GET_AUTOCOMPLETE) Observable<GoogleAutocompleteSearchResponse> getAutoCompleteSearch(@Query("input") String input, @Query("key") String key, @Query("components") String components); // Google Autocomplete places @GET(ApiConstants.GET_AUTOCOMPLETE_PLACE) Observable<GoogleAutoCompletePlacesResponse> getAutoCompletePlaces(@Query("placeid") String input, @Query("key") String key); 

Вы можете получить долготу широты во втором апи.

Надеюсь, что это поможет вам.

Сначала получите долготу, широту места назначения

 public Location getCoordinatesFromAddress(Context context,String strAddress) { Geocoder coder = new Geocoder(context); List<Address> address; Location destinationLoc = null; try { address = coder.getFromLocationName(strAddress, 5); if (address == null) { return null; } Address location = address.get(0); destinationLoc = new Location("Destination"); destinationLoc.setLatitude(location.getLatitude()); destinationLoc.setLongitude(location.getLongitude()); } catch (Exception ex) { ex.printStackTrace(); } return destinationLoc; } 

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

 Location locationA = new Location("Present location "); locationA.setLatitude(latA); locationA.setLongitude(lngA); 

Затем, после получения широт и долгот места назначения и источника (настоящего), вы можете легко рассчитать расстояние между ними, например

 float distance = locationA.distanceTo(locationB); 

Это даст вам расстояние b / w двух географических местоположений в метрах.

Взгляните на этот ответ . Также рассмотрите этот API из Google.

Я предполагаю, что вы хотите выглядеть так:
– получить целевые координаты улицы [lat, long]
– получить близлежащие места из Google,
– поиск ближайшего места.

В этом случае, если вы можете получить адрес как адресата, так и источника, то, следуя методу, вы можете получить расстояние между адресом.

Для чего вам необходимо передать либо адрес (источник / место назначения), либо широту / долготу (начало / место назначения)

1) Здесь параметр origin может быть следующим: если адрес указан

 origins=Bobcaygeon+ON|24+Sussex+Drive+Ottawa+ON 

2) Где, если, если задана широта / долгота, тогда будет формат.

 origins=41.43206,-81.38992 

3) Если вы можете получить идентификатор места, то это будет формат

 origins=place_id:ChIJ3S-JXmauEmsRUcIaWtf4MzE 

В следующем примере используются координаты широты / долготы для указания координат назначения

 https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=40.6655101,-73.89188969999998&destinations=40.6905615%2C-73.9976592%7C40.6905615%2C-73.9976592%7C40.6905615%2C-73.9976592%7C40.6905615%2C-73.9976592%7C40.6905615%2C-73.9976592%7C40.6905615%2C-73.9976592%7C40.659569%2C-73.933783%7C40.729029%2C-73.851524%7C40.6860072%2C-73.6334271%7C40.598566%2C-73.7527626%7C40.659569%2C-73.933783%7C40.729029%2C-73.851524%7C40.6860072%2C-73.6334271%7C40.598566%2C-73.7527626&key=YOUR_API_KEY 

Тот же запрос для кодированной полилинии будет

 https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=40.6655101,-73.89188969999998&destinations=enc:_kjwFjtsbMt%60EgnKcqLcaOzkGari%40naPxhVg%7CJjjb%40cqLcaOzkGari%40naPxhV:&key=YOUR_API_KEY 

Как объясняется другим, общий метод поиска кратчайшего расстояния с использованием API

 float distance = firstLocation.distanceTo(secondLocation); 

Для получения дополнительной информации перейдите по этой ссылке

Просто используйте формулу Хаверсина для вычисления расстояния между двумя точками, если вы знаете широту и долготу для каждого из них.

  • Пакет узлов: узел Haversine
  • Gradle: Gradle Haversine
Intereting Posts
Камера не открыта – Статическая инициализация на OpenCV Android SQLite – Можно ли вставить BLOB через инструкцию insert? Android перемещает фон непрерывно с помощью анимации Эффект андроидного увеличительного стекла Proguard minifyEnabled true для сборки отладки, не работающей на pre-Lollipop Введите данные в EditText и ответьте, не нажимая Enter. Возможно ли создать пользовательский вид для ActionBar SubMenu? Установка targetSdkVersion = "13" заставляет действия игнорировать android: configChanges = флаг "orientation" Заголовки с Android NDK Android Marshmallow ART «Не удалось найти родное смещение для dex» crash Девять патчей в пользовательской группе просмотра Будет ли изображение слишком большим, чтобы приложение вернулось к предыдущему действию? Выделение цвета текста с помощью Html.fromHtml () в Android? Как настроить потоковое видео в прямом эфире на мобильный сервер wowza? Отправить электронное письмо в Android, выбрав только приложения электронной почты и указав тип mime приложения