Как проверить, находится ли мое текущее местоположение на маршруте, который я рисую, и, если нет, перерисовать маршрут

Как проверить, находится ли мое текущее местоположение на маршруте, который я нарисовал раньше, и если нет, перерисовать маршрут.

Итак, как я думаю: у нас есть что-то вроде этого:

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(широта). Расстояние до места (нет точного названия этого метода) основано на сложной геометрии, "реальной" форме земли и т. Д., Поэтому нецелесообразно использовать его против нескольких тысяч географических точек.

Другие вопросы по тегам