【发布时间】:2019-04-01 23:06:28
【问题描述】:
我正在为RoadsApi 使用 Google Maps Java API:
文档:https://developers.google.com/maps/documentation/roads/intro
接口: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。
过去有没有人遇到过这种情况?或者也许对如何从这个响应中推断出我需要的数据有一个想法?我可以将它从字符串对象中解析出来,但这会很笨拙,而且充其量也不可靠——因为我不确定如果返回多条记录它会如何表现。
我只需要经纬度!
【问题讨论】:
-
我看不出您收到的回复与文档中解释的内容有何不同。
-
@MrUpsidown 你读过我说的吗?我说这就像文档中的内容一样。我 - 正在寻找一种无需解析字符串对象即可获得 lat long 的方法。
-
我确实阅读了您的问题,但有些不清楚。所以你的问题是How to parse JSON with Java?
标签: java google-maps google-roads-api