Как нарисовать файл KML на MapView в Android?
Я должен нарисовать файл KML в виде карты. Я посмотрел в интернете но я не нашел примера как это сделать, если кто-то может привести пример, как это сделать, это будет здорово!
3 ответа:
KML теперь не поддерживается. Вы можете нарисовать такой след без KML:
1) сделать запрос к сервису Google:
Request : http://maps.googleapis.com/maps/api/directions/output?parameters Info about : https://developers.google.com/maps/documentation/directions/
2) отправить запрос
3) разбор ответа JSON следующим образом:
JSONObject jsonObject; ... JSONArray results = jsonObject.optJSONArray("routes"); JSONObject route = results.optJSONObject(0); JSONArray legs = route.optJSONArray("legs"); JSONObject leg = legs.optJSONObject(0); JSONArray steps = leg.optJSONArray("steps"); for (int i=0; i < steps.length(); ++i) { JSONObject step = steps.optJSONObject(i); JSONObject startP = step.optJSONObject("start_location"); JSONObject endP = step.optJSONObject("end_location"); JSONObject polyline = step.optJSONObject("polyline"); String encodedPoints = polyline.optString("points"); ...
4) encodedPoints имеет много точек, которые можно декодировать следующим образом: Map View draw directions using google Directions API-decoding polylines
5) нарисуйте наложение следующим образом:private class Road extends Overlay { private ArrayList<GeoPoint> list; private Paint paint; public Road(ArrayList<GeoPoint> list) { this.list = new ArrayList<GeoPoint>(); this.list.addAll(list); paint = new Paint(); paint.setColor(Color.MAGENTA); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(4); } @Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { drawPath(mapView, canvas); } private void drawPath(MapView mv, Canvas canvas) { int x1 = -1; int y1 = -1; int x2 = -1; int y2 = -1; Point point = new Point(); for (int i=0; i < list.size(); i++) { mv.getProjection().toPixels(list.get(i), point); x2 = point.x; y2 = point.y; if (i > 0) { canvas.drawLine(x1, y1, x2, y2, paint); } x1 = x2; y1 = y2; } }
Удачи!
Этот способ извлечения Google Directions из Google путем синтаксического анализа файла KML больше не доступен с 27 июля 2012 года (поскольку Google изменил структуру извлечения Google Directions, теперь вы можете получить его только с помощью JSON или XML), пришло время использовать JSON вместо KML.
Смотрите ответ в моем собственном вопросе здесь.