gpt4 book ai didi

android - 地理编码器限制

转载 作者:行者123 更新时间:2023-11-29 00:40:30 24 4
gpt4 key购买 nike

我正在构建一个 android 应用程序,我正在使用 Geocoder 来解码位置,但我注意到有时当连接性相对较低时,Gecoder 不起作用。但与此同时,浏览器和其他基于互联网的应用程序也能正常运行。有没有什么办法解决这一问题 ?这可能出了什么问题。我知道它是一个后端服务,但它应该无关紧要。对于常规的 http 请求,我们可以重试并修复类似的问题,但我该如何解决这个问题?有什么建议吗?

class ReverseGeocodingTask extends AsyncTask<Double, Void, String> implements OnDismissListener{

Context context;
ProgressDialog progDialog;
String progressString;

public ReverseGeocodingTask(Context context, String progressStr) {
this.context = context;
this.progressString = progressStr;
if(!isCancelled()){
initProgDialog();
}

}

void initProgDialog(){

progDialog = new ProgressDialog(context);
progDialog.setCanceledOnTouchOutside(false);
progDialog.setButton(DialogInterface.BUTTON_NEGATIVE, getString(R.string.btn_cancel),new DialogInterface.OnClickListener() {
public void onClick(final DialogInterface dialog, final int id) {
progDialog.dismiss();
}
});
progDialog.setMessage(progressString);
progDialog.setOnDismissListener(this);
progDialog.show();
}


@Override
protected void onPreExecute() {
//removeAllPendingRevGeocodingTasks();
addTask(this);
super.onPreExecute();
}

@Override
protected String doInBackground(Double... params) {
String result = null;

if(!isCancelled()){
Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault());
try {
List<Address> list = geocoder.getFromLocation(latitude, longitude, 1);

if (list != null && list.size() > 0) {
Address address = list.get(0);
result = address.getAddressLine(0) + ", " + address.getLocality();
}

} catch (IOException e) {
progDialog.dismiss();
failedToUpdateLocation();
Log.e("Location listener", "Failed to decode location name");
}
}
return result;

}

@Override
protected void onCancelled() {
progDialog.dismiss();
this.cancel(true);
super.onCancelled();
}

@Override
protected void onPostExecute(String result) {
latLongInDegrees = " "+latLongInDegreesToDMSString(latitude,longitude);
setLocationName(result);
updateLocationName(result + latLongInDegrees);

String progressStr=getString(R.string.msg_slp_fetch_from_geocoder_result_1)+latLongInDegreesToDMSString(latitude,longitude)+"...";
executeSLPWebserviceTask(latitude, longitude, progressStr);
finishedUpdatingLocation(latitude,longitude);
progDialog.dismiss();
super.onPostExecute(result);
this.cancel(true);
//removeAllPendingRevGeocodingTasks();
}

public void onDismiss(DialogInterface dialog) {
this.cancel(true);
}

}


protected void executeRevGeocoderTask(double lat, double longitude)
{
String progressStr=getString(R.string.msg_rev_geocoder_fetch)+" "+latLongInDegreesToDMSString(lat,longitude);
ReverseGeocodingTask task = new ReverseGeocodingTask(this,progressStr);
task.execute(lat,longitude);
}

最佳答案

Geocoder 是一种后端服务,我们无法处理其 http 请求或任何此类请求。它需要良好的互联网连接。

关于android - 地理编码器限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9679144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com