在android中使用mapquest webservice创建路由

时间:2015-02-19 15:47:13

标签: android web-services mapquest

我正在尝试使用android上的map map来创建一个路由,而我正在尝试使用webservice创建mapquest,因为你需要做一个引用,是一个关键的企业,我有以下代码。

URL url = new URL("http://open.mapquestapi.com/directions/v2/route?key=MY_KEY&callback=renderAdvancedNarrative&outFormat=json&routeType=fastest&timeType=1&enhancedNarrative=false&shapeFormat=raw&generalize=0&locale=en_US&unit=m&from=-20.64,-47.28&to=-23.4,-46.32&drivingStyle=2&highwayEfficiency=21.0");

URLConnection connection = url.openConnection();
connection.setRequestProperty("Referer", "MY_REFERER");

InputStream input = connection.getInputStream();

String str = IOUtils.toString(input, "utf-8");

input.close();

JSONObject test = new JSONObject(str.replace("renderAdvancedNarrative(", "").replace(")", ""));

RouteResponse response = new RouteResponse(test);

listShapes = response.route.shape.shapePoints;

这段代码,我以JSON格式返回数据,返回坐标。

response.route.shape.shapePoints

此代码返回GeoPoints数组

问题在于我无法找到创建此类信息路径的方法。

有人能帮我解决这个问题吗?谢谢。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用https://github.com/jd-alexander/Google-Directions-Android此项目允许您计算两个位置之间的路线并将其显示在地图上。

答案 1 :(得分:0)

下午好,

由于我没有找到一个解决方案,我尝试了另一种方法来创建一个没有mapquest地图的路线,使用webservice和一个关键企业。

URL url = new URL("http://open.mapquestapi.com/directions/v2/route?key=MY_KEY&callback=renderAdvancedNarrative&outFormat=json&routeType=fastest&timeType=1&enhancedNarrative=false&shapeFormat=raw&generalize=0&locale=en_US&unit=m&from=-20.64,-47.28&to=-23.4,-46.32&drivingStyle=2&highwayEfficiency=21.0");

URLConnection connection = url.openConnection();
connection.setRequestProperty("Referer", "MY_REFERER");

InputStream input = connection.getInputStream();

String str = IOUtils.toString(input, "utf-8");

input.close();

JSONObject test = new JSONObject(str.replace("renderAdvancedNarrative(", "").replace(")", ""));

RouteResponse response = new RouteResponse(test);

// HERE

Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.rgb(0, 187, 248));
paint.setAlpha(100);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStrokeWidth(13);

LineOverlay line = new LineOverlay(paint);
line.setData(response.route.shape.shapePoints);
line.setKey("Line #1");

this.mapOver.getOverlays().add(line);
this.mapOver.invalidate();

这当然不是最好的方式,但对我而言,它有效。

谢谢。

  • EDIT

添加了补充,以便根据坐标使地图居中。

int middleArray = Math.round(list.size() / 2);
this.mapOver.getController().setCenter(list.get(middleArray));
  • EDIT

记住这行代码是一个安全漏洞,但它是mapquest如何用来引用关键企业的meneira。

connection.setRequestProperty("Referer", "MY_REFERER");