我有以下情况:用户输入了两个点的经纬度,我想同时获得这两个点的地址。我想同时得到这两个点的地址,但我不知道如何才能做到这一点。目前,我只能得到一个点的地址,这是我的代码。
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)
如果你有2个点的话,可以考虑修改一下签名 getAddress(double query1, double query2)
到 getAddress(MyPoint point1, MyPoint point2
然后从你的服务中返回2个地址。
public class MyPoint{
public double x;
public double y;
}
为了达到这个目的,你的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;
}
}