Java 如何从Snapdpoints响应中从Google Maps RoadsApi中提取Lat/Long?

Java 如何从Snapdpoints响应中从Google Maps RoadsApi中提取Lat/Long?,java,google-maps,google-roads-api,Java,Google Maps,Google Roads Api,我正在为RoadsApi使用谷歌地图Java API: 文件: API: 我的请求结构如下: latlngStart = new LatLng(Double.parseDouble(lastLoc.getNormalized_lat().toString()), Double.parseDouble(lastLoc.getNormalized_lng().toString())); LatLng latlngEnd = new LatLng(Double.parseDoubl

我正在为
RoadsApi
使用谷歌地图Java API: 文件: API:

我的请求结构如下:

    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": [
    {
      "location": {
        "latitude": -35.2784167,
        "longitude": 149.1294692
      },
      "originalIndex": 0,
      "placeId": "ChIJoR7CemhNFmsRQB9QbW7qABM"
    },
...
}
这确实给了我预期的snapedpoints[]响应,但是我有点不知道如何解析它或获取字符串值:

    for (SnappedPoint point : points) {
        System.out.println(point);
    }
上述代码迭代响应并打印出内容:

[42.64472036,-83.21762969, placeId=ChIJf2D4OTbAJIgR3qx12TMRuIE, originalIndex=0]
正如您在该API的文档页面上所看到的,它很少涉及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": [
    {
      "location": {
        "latitude": -35.2784167,
        "longitude": 149.1294692
      },
      "originalIndex": 0,
      "placeId": "ChIJoR7CemhNFmsRQB9QbW7qABM"
    },
...
}
这大致模仿了我收到的响应,我只能想象他们正在使用JavaScript API

过去有人在这方面有过好运吗?或者你知道如何从这个回答中推断出我需要的数据吗?我可以从string对象中解析它,但这将是笨拙的,最多也不可靠的——因为我不确定如果返回多个记录,它将如何运行


我所需要的就是长和宽

首先,您应该有一个可以包装该数据的类,因此该类应该包含您的应用程序中可能需要的所有字段,您可以从Google API响应中获得这些字段。然后,您将需要一些JSON解析器,可以从响应中获取数据,最后您必须使用JSON对象的参数实例化以前创建的类

有关更详细的技术信息,您可能想看看这个。

Java For Google Maps服务只是web服务之上的一个包装

您检查了纯web服务的JSON响应结构,但客户端库将响应转换为javadoc中描述的Java对象:

如果您检查javadoc中的
snapedpoint
类,您将看到它有一个
location
属性,即
LatLng
对象。因此,为了获得坐标,您需要执行以下操作

for (SnappedPoint point : points) {
    LatLng loc = point.location;
    double lat = loc.lat;
    double lng = loc.lng;
}  

我希望这有帮助

我看不出您收到的回复与文档中的解释有什么不同。@Upsidown先生您读过我说的吗?我说这和文件里的一样。我一直在寻找一种不必解析字符串对象就可以获得lat长度的方法。我确实读过你的问题,但有点不清楚。那么你的问题是?