【问题标题】:how to pass latitude and longitude in retrofit for nearest road API如何在最近道路 API 的改造中通过纬度和经度
【发布时间】:2018-10-29 07:32:37
【问题描述】:

这是请求格式

https://roads.googleapis.com/v1/nearestRoads?parameters&key=YOUR_API_KEY

这里我需要传递纬度和经度作为参数点,像这样

https://roads.googleapis.com/v1/nearestRoads?points=60.170880,24.942795|60.170879,24.942796|60.170877,24.942796&key=YOUR_API_KEY

我试图通过它像

  @POST("nearestRoads?points&key=my_api_key")
Call<SnappedPoints> getNearestRoad(@FieldMap Double map);

通过调用

Call<SnappedPoints> call = retrofitClientMap.getNearestRoad(stringStringMap.put(latLng3.latitude,latLng3.longitude));

但它显示了一个非法异常,任何人都可以帮助有一个想法来解决它

【问题讨论】:

  • @Query 不是用于@GET 方法吗?
  • 我的错误我以为是@GET方法。
  • 您是否在代码中遗漏了@FormUrlEncoded 或仅存在问题。
  • @POST("nearestRoads?points=9.994932,76.288885&key=my_key") 调用 getNearestRoad();这应该是格式,但必须在函数 getNearestRoad() 中传递该值 9.994932,76.288885
  • 非法异常?你的意思是非法参数exception?如果是这样,可能是因为您将错误的参数传递给 getNearestRoad(...)。您使用Double(对象)声明@FieldMap,但在调用时,您传入double(原始):stringStringMap.put(60.170880,24.942795)

标签: android api retrofit


【解决方案1】:

你有没有尝试过这样的事情

@POST("nearestRoads?key=my_api_key")
Call<SnappedPoints> getNearestRoad(@Field("points") String points);

然后将您的积分作为String 传递给此方法

【讨论】:

    【解决方案2】:

    我通过调用api服务得到它

     @POST("nearestRoads?key=my_api_key")
        // Call<MySnappedPoints> getNearestRoad();
    Call<MySnappedPoints> getNearestRoad(@Query("points") String points);
    

    调用它

     String test = Double.toString(mGoogleMap.getCameraPosition().target.latitude) + "," + Double.toString(mGoogleMap.getCameraPosition().target.longitude);
        Call<MySnappedPoints> call = retrofitClientMap.getNearestRoad(test);
    

    【讨论】:

      猜你喜欢
      • 2013-09-18
      • 1970-01-01
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      相关资源
      最近更新 更多