【发布时间】:2016-03-14 11:41:31
【问题描述】:
大家好,我正在研究 Google 地图的实施。
我正在尝试通过谷歌地图绘制路径。我有按钮来启动和停止 GPS,基本上是为了获取纬度和经度值。
例如:我可能会得到 10 个纬度和经度值并将它们存储在 ArrayList 中。
现在我正在尝试使用上面的 lat 和 long 列表绘制路径,如果我使用 Google maps API,那么我只需要发送 ArrayList 的起点和终点,然后它在地图上绘制/渲染,但它不是我想要的方式。
我想沿着 lat 和 long 值(10 个值)列表绘制路径。原因是谷歌只是给了我们从头到尾的路径,但它可能不是用户旅行的方式/路线.
我们怎样才能做到这一点?
以下是我正在做的事情:
private String getMapsApiDirectionsUrl(LatLng source, LatLng destination, String mode) {
// Origin of route
String str_origin = "origin=" + source.latitude + "," + source.longitude;
// Destination of route
String str_dest = "destination=" + destination.latitude + "," + destination.longitude;
// Sensor enabled
String sensor = "sensor=false";
// Building the parameters to the web service
String parameters = str_origin + "&" + str_dest + "&" + sensor + "&" + mode + "&alternatives=true";
// Output format
String output = "json";
// Building the url to the web service
String url = "https://maps.googleapis.com/maps/api/directions/" + output + "?" + parameters;
Log.e(TAG, " " + url);
return url;
}
private class ReadTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... url) {
String data = "";
try {
HttpConnection http = new HttpConnection();
data = http.readUrl(url[0]);
} catch (Exception e) {
Log.d("Background Task", e.toString());
}
return data;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
new ParserTask().execute(result);
}
}
private class ParserTask extends
AsyncTask<String, Integer, List<List<HashMap<String, String>>>> {
@Override
protected List<List<HashMap<String, String>>> doInBackground(
String... jsonData) {
JSONObject jObject;
List<List<HashMap<String, String>>> routes = null;
try {
jObject = new JSONObject(jsonData[0]);
PathJSONParser parser = new PathJSONParser();
routes = parser.parse(jObject);
} catch (Exception e) {
e.printStackTrace();
}
return routes;
}
@Override
protected void onPostExecute(List<List<HashMap<String, String>>> routes) {
task.callBack(routes);
}
}
编辑
我正在按照here 显示的方式进行操作,但发生的情况是基于开始和结束值谷歌地图 APi V2 为我提供了路线,但这可能不是用户已经走过的路线,因为他可能在开始和结束之间访问了一些地方。
【问题讨论】:
-
@jaydroider 是的,我正在按照它在那里显示的方式进行操作,但是会发生什么基于开始和结束值谷歌地图 APi V2 给了我路线,但这可能不是用户拥有的路线旅行,因为他可能在开始和结束之间访问了一些地方。
-
我认为您需要创建服务,该服务将在某个时间间隔内获取用户的位置,并通过将该位置每隔一段时间传递给 Google API (maps.googleapis.com/maps/api/directions/…),您将在用户旅行时绘制路径。跨度>
标签: android google-maps google-maps-android-api-2