我有一个要求,即连续测量距离并最终跟踪路径。如何形成应用程序?谷歌地图是否公开了 API?
您可以使用 Google 距离矩阵 API 结合纬度和长度。 来自设备位置服务的数据。
我在下面写了一个伪代码
private LocationListener locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location newLocation)
{
if (previousLocation != null)
{
new googledistancematixapitask(previouslocation.getlatlong(),new location.getlatlong()).execute((Void) null);
}
previousLocation = newLocation;
}
public class googledistancematixapitask extends AsyncTask<Void, Void, Boolean> {
private final String mSourcelatlong;
private final String mDestinationlatlong;
Postyouridetask(String sourcelatlong, String destinationlatlong) {
mSourcelatlong = sourcelatlong;
mDestinationlatlong = destinationlatlong;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(Void... param) {
// Building Parameters
/*List<NameValuePair> params = new ArrayList<NameValuePair>();
// post album id, song id as GET parameters
params.add(new BasicNameValuePair("name", mName));
params.add(new BasicNameValuePair("email", mEmail));
params.add(new BasicNameValuePair("password", mPassword));
params.add(new BasicNameValuePair("profile", mProfile));*/
try {
JSONObject params = new JSONObject();
params.put("sourcelatlong", mSourcelatlong);
params.put("destinationlatlong", mDestinationlatlong);
String json = jsonParser.makeHttpRequest("google distance matrix api", "POST",
params);
JSONObject jObj = new JSONObject(json);
if(jObj != null){
String data = jObj.getString("success");
}
} catch (JSONException e) {
e.printStackTrace();
}
return distance;
}
@Override
protected void onPostExecute(final String distance) {
totaldistance += distance;
}
@Override
protected void onCancelled() {
}
1)如果我们获得位置更新并且它执行异步任务并且仍在等待Google返回距离。如果第二个更新到来并在第一个更新完成之前执行异步任务。当我们计算总距离时,我们最后不会得到错误的结果吗?