Как проверить, находится ли мое текущее местоположение на маршруте, который я рисую, и, если нет, перерисовать маршрут
Как проверить, находится ли мое текущее местоположение на маршруте, который я нарисовал раньше, и если нет, перерисовать маршрут.
Итак, как я думаю: у нас есть что-то вроде этого:
ArrayList<LatLng> listGeopoints = new ArrayList<LatLng>()
(в ответ от
String url = "http://maps.googleapis.com/maps/api/directions/xml?"
+ "origin=" + start.latitude + "," + start.longitude
+ "&destination=" + end.latitude + "," + end.longitude
+ "&sensor=false&units=metric&mode=driving";
)
и я должен сделать что-то вроде этого
for(LatLng point : listGeopoint){
if (checkIfPointNearly(currentPoint, point)) return true;
else return false
}
1 ответ
Основной способ - вы должны проверить, находится ли ваша текущая позиция рядом с ранее зарегистрированными точками. В классе местоположения есть метод для измерения расстояния до другого местоположения.
Для производительности - вы можете принять формулу Pitagoras - просто помните, что степень широты (вполне) постоянна, а степень долготы меняется в зависимости от текущей широты length_of_longitude_degree = cos(широта). Расстояние до места (нет точного названия этого метода) основано на сложной геометрии, "реальной" форме земли и т. Д., Поэтому нецелесообразно использовать его против нескольких тысяч географических точек.