Я использую Google Maps Java API для RoadsApi
:
Документы: https://developers.google.com/maps/documentation/roads/intro
API: https://github.com/googlemaps/google-maps-services-java
Мой запрос структурирован так:
latlngStart = new LatLng(Double.parseDouble(lastLoc.getNormalized_lat().toString()), Double.parseDouble(lastLoc.getNormalized_lng().toString()));
LatLng latlngEnd = new LatLng(Double.parseDouble(latitude), Double.parseDouble(longitude));
SnappedPoint[] points;
if (origin.equals(true)) {
points = RoadsApi.snapToRoads(context, latlngStart, latlngEnd).await();
} else {
points = RoadsApi.snapToRoads(context, latlngEnd).await();
}
Это дает мне ожидаемый ответ SnappedPoints [], однако я несколько затрудняюсь разобрать его или получить строковые значения:
for (SnappedPoint point : points) {
System.out.println(point);
}
Этот фрагмент кода повторяет ответ и печатает содержимое:
[42.64472036,-83.21762969, placeId=ChIJf2D4OTbAJIgR3qx12TMRuIE, originalIndex=0]
Как вы можете видеть на странице документа для этого API, он очень мало говорит о реализации Java и просто утверждает, что ответ возвращается так:
{
"snappedPoints": [
{
"location": {
"latitude": -35.2784167,
"longitude": 149.1294692
},
"originalIndex": 0,
"placeId": "ChIJoR7CemhNFmsRQB9QbW7qABM"
},
...
}
Это немного имитирует ответ, который я получил, и я могу только представить, что они используют JavaScript API.
Кому-нибудь повезло с этим в прошлом? Или, может быть, есть идея о том, как экстраполировать нужные мне данные из этого ответа? Я мог бы разобрать его из строкового объекта, но это было бы неуклюже и в лучшем случае ненадежным, поскольку я не уверен, как он будет себя вести, если будет возвращено несколько записей.
Все, что мне нужно, это широчайший и длинный!