Вы можете использовать запрос обратный геокод в API Карт Google, чтобы определить, в каком состоянии находится конкретная точка. Поэтому я полагаю, что вы можете обработать свой массив точек, возвращенных с запросом направления, и получить из состояния для каждого.
В API v2 это будет:
results.AddressDetails.AdministrativeArea.AdministrativeAreaName
Я думаю, что это немного более интуитивно понятно в v3 . Вы можете проверить массив AddressComponents в результатах, чтобы найти подходящий тип:
{
"long_name":"California",
"short_name":"CA",
"types":["administrative_area_level_1","political"]
}
Вы можете оптимизировать обратное геокодирование, используя «разделяй и властвуй» для массива позиций на маршруте (если состояние одинаково для первой и средней позиции, то не выполняйте обратное геокодирование на промежуточных точках).