我正在尝试使用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数组
问题在于我无法找到创建此类信息路径的方法。
有人能帮我解决这个问题吗?谢谢。
答案 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();
这当然不是最好的方式,但对我而言,它有效。
谢谢。
添加了补充,以便根据坐标使地图居中。
int middleArray = Math.round(list.size() / 2);
this.mapOver.getController().setCenter(list.get(middleArray));
记住这行代码是一个安全漏洞,但它是mapquest如何用来引用关键企业的meneira。
connection.setRequestProperty("Referer", "MY_REFERER");