如何从API中同时获取两个地址?

问题描述 投票:0回答:1

我有以下情况:用户输入了两个点的经纬度,我想同时获得这两个点的地址。我想同时得到这两个点的地址,但我不知道如何才能做到这一点。目前,我只能得到一个点的地址,这是我的代码。

public class RemoteRepository {
    private ApiRequest apiRequest;

    public RemoteRepository() {
        apiRequest = RetrofitRequest.getInstance().create(ApiRequest.class);
    }

    public LiveData<AddressResponse> getAddress(double query1, double query2) {
        final MutableLiveData<AddressResponse> data = new MutableLiveData<>();

        apiRequest.getAddress(query1, query2)
                .enqueue(new Callback<AddressResponse>() {
                    @Override
                    public void onResponse(Call<AddressResponse> call, Response<AddressResponse> response) {

                        if(response.body() != null) {
                            data.setValue(response.body());
                        }
                    }

                    @Override
                    public void onFailure(Call<AddressResponse> call, Throwable t) {
                        data.setValue(null);
                    }
                });

        return data;
    }
}

怎样才能同时得到两个点的地址?我是否应该实现下面的调用。

apiRequest.getAddress(query1, query2)
android api rest
1个回答
0
投票

如果你有2个点的话,可以考虑修改一下签名 getAddress(double query1, double query2)getAddress(MyPoint point1, MyPoint point2 然后从你的服务中返回2个地址。

public class MyPoint{
 public double x;
 public double y;
}


0
投票

为了达到这个目的,你的API必须同时接受这两个点,并从你的API返回2个地址作为一个列表。

修改你的请求,如下所示。

首先,在你的项目中创建一个AddressPoint类。

public class AddressPoint{
 public double x;
 public double y;

public AddressPoint(double x,double y){
this.x= x;
this.y= y;
}

} 

然后调用你的请求,如下所示

AddressPoint query1 = AddressPoint(point1,point2);  // point1,point2,point3,point4 of type double
AddressPoint query2 = AddressPoint(point3,point4);

apiRequest.getAddress(query1, query2);

为了从后端API接收两个地址,你的Json应该是这样的。

{
  "addresses": [
    "Address1",
    "Address2"
  ]
}

而你的AddressResponse类应该是这样的:

public class AddressResponse {

@SerializedName("addresses")
@Expose
private List<String> addresses = null;

public List<String> getAddresses() {
return addresses;
}

public void setAddresses(List<String> addresses) {
this.addresses = addresses;
}

}
© www.soinside.com 2019 - 2024. All rights reserved.