Google рдорд╛рдирдЪрд┐рддреНрд░ рдЖрдкрдХреЗ Android рдРрдк рдореЗрдВ рджрд┐рд╢рд╛-рдирд┐рд░реНрджреЗрд╢ рджреЗрддрд╛ рд╣реИ

рдмрд╣реБрдд рдкрд╣рд▓реЗ рдирд╣реАрдВ рдореБрдЭреЗ рдПрдХ рдЖрд╡реЗрджрди рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдереА рдЬреЛ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рджреЛ рджрд┐рдП рдЧрдП рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рдорд╛рд░реНрдЧ рджрд┐рдЦрд╛рдПрдЧрд╛ред рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, Google рд╕реЗ рдирдХреНрд╢реЗ рдЪреБрдиреЗ рдЧрдП рдереЗред рдПрдХ рдЫреЛрдЯреА рдЦреЛрдЬ рдХреЗ рдмрд╛рдж, рд▓реЗрдЦреЛрдВ рдХреЛ рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ, рдкрд┐рдВрд╕ рдХреЛ рдЫрд╛рдирдиреЗ рдФрд░ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рд░реНрдЧ рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рд▓реЗрдЦ рдирд╣реАрдВ рдерд╛, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕ рдЪреВрдХ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ (рдпрд╣ рдирдП рдЦрдирди рд╡рд╛рд▓реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдЖрдПрдЧрд╛)ред рд╣реИрдмреНрд░рдХрдЯ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдкрдврд╝рд╛, рдПрдХ рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХреА рдФрд░ рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрд╡реЗрджрди рд▓рд┐рдЦрд╛, рдЬрд┐рд╕ рдкрд░ рджреЛ рдмрд┐рдВрджреБ рдЪрд┐рд╣реНрдирд┐рдд рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЗрди рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдорд╛рд░реНрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдорд╛рд░реНрдЧ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдФрд░ рдорд╛рд░реНрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд▓рд┐рдВрдХ рдкрд░ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рд▓рд┐рдВрдХ рдореЗрдВ рдЕрдХреНрд╖рд╛рдВрд╢ рдФрд░ рджреЗрд╢рд╛рдВрддрд░ рдХреЙрдорд╛ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рд╣реИрдВ) рдФрд░ XML рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рд╣рдо DOM рдкрд╛рд░реНрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╡реЗрдкреЙрдЗрдВрдЯ рдирд┐рдХрд╛рд▓реЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред

String urlString = "http://maps.google.com/maps?f=d&hl=en&saddr=" + startGeoPoint + "&daddr=" + stopGeoPoint + "&ie=UTF8&0&om=0&output=kml";
Document document = null;
HttpURLConnection urlConnection = null;
URL url = null;
try {
url = new URL(urlString);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.connect();
DocumentBuilderFactory documentBuildFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuildFactory.newDocumentBuilder();
document = documentBuilder.parse(urlConnection.getInputStream());
} catch (Exception e) { }


рдХреЗрдПрдордПрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдмрд╛рдж, рдорд╛рд░реНрдЧ рдореЗрдВ рдЫреЛрдЯреЗ рдЦрдВрдб рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рд╣рдорд╛рд░рд╛ рдорд╛рд░реНрдЧ рдЧреБрдЬрд░реЗрдЧрд╛ред XML рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЕрдВрдХ "рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ" рдЯреИрдЧ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рд╣реИрдВ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, "рд▓рд╛рдЗрдирд╕реНрдЯреНрд░реАрдо" рдХреЗ рдЕрдВрджрд░ рд╣реИред

String points = null;
NodeList nodeList = document.getElementsByTagName("LineString");
points = nodeList.item(0).getFirstChild().getFirstChild().getNodeValue();
String[] finalArray = points.split(" ");


рдЗрд╕ рдкрд░, рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдорд╛рд░реНрдЧ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред рд╣рдо рд▓рд╛рдЗрди рдХреЛ рд╕реНрд╡рдпрдВ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдбрд╝рддреЗ рд╣реИрдВред

рдУрд╡рд░рд▓реЗ рд░реВрдЯ рд▓рд╛рдЗрди



рдпрд╣ рд╡рд░реНрдЧ рдУрд╡рд░рд▓реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рдФрд░ (рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдмреЛрд▓ рд░рд╣рд╛ рд╣реИ) рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХ рд╕реНрддрд░ рд╣реИ рдЬрд┐рд╕реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ, рд╣рдо рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдмрдирд╛рдПрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо рд▓рд╛рдЗрди рдХреЗ рдЖрд░рдВрдн рдФрд░ рдЕрдВрдд рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдПрдХ рдбреНрд░рд╛ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВрдЧреЗ рдЬреЛ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдЦреАрдВрдЪреЗрдЧреАред

private GeoPoint start;
private GeoPoint stop;
public MapOverlay(GeoPoint start, GeoPoint stop) {
this.start = start;
this.stop = stop;
}

@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
// TODO Auto-generated method stub
Projection projection = mapView.getProjection();
if (shadow == false) {
Paint paint = new Paint();
paint.setAntiAlias(true);
Point point = new Point();
projection.toPixels(start, point);
paint.setColor(Color.BLUE);
Point point2 = new Point();
projection.toPixels(stop, point2);
paint.setStrokeWidth(2);
canvas.drawLine((float) point.x, (float) point.y, (float) point2.x, (float) point2.y, paint);
}
return super.draw(canvas, mapView, shadow, when);
}


рдФрд░ рдЕрдм рд╣рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдЕрдВрдХ рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рд╣рдорд╛рд░рд╛ рдорд╛рд░реНрдЧ рдмрди рдЬрд╛рдПрдЧрд╛ред

рдорд╛рд░реНрдЧ рдирд┐рд░реНрдорд╛рдг



рдпрджрд┐ рдЖрдк рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЖрддреЗ рд╣реИрдВ, рддреЛ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЬрд┐рдпреЛрдкреНрд╡рд╛рдЗрдВрдЯ рдореЗрдВ рдкрд╣рд▓реЗ рдЕрдХреНрд╖рд╛рдВрд╢, рдлрд┐рд░ рджреЗрд╢рд╛рдВрддрд░ рдХрд╛ рд╕рдВрдХреЗрдд рдорд┐рд▓рддрд╛ рд╣реИред

String coords = finalArray[0].split(",");
GeoPoint start = new GeoPoint((int) (Double.parseDouble(coords[1]) * 1E6), (int) (Double.parseDouble(coords[0]) * 1E6));
// , , ,
mapView.getOverlays().add(new MapOverlay(start, start));
GeoPoint geoPoint1;
GeoPoint geoPoint2 = start;
for (int i = 1; i < finalArray.length; i++) {
coords = finalArray[i].split(",");
geoPoint1 = geoPoint2;
geoPoint2 = new GeoPoint((int) (Double.parseDouble(coords[1]) * 1E6), (int) (Double.parseDouble(coords[0]) * 1E6));
mapView.getOverlays().add(new MapOverlay(geoPoint1, geoPoint2));
}
mapView.getOverlays().add(new MapOverlay(geoPoint2, geoPoint2));


рдЗрд╕рд╕реЗ рдорд╛рд░реНрдЧ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИред рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЕрдкрдиреЗ рд╕рд╛рде рдЬреЛ рд╣реБрдЖ рдЙрд╕рдХрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рджреВрдВрдЧрд╛ред



PS рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреГрдкрдпрд╛ рдХрдбрд╝рд╛рдИ рд╕реЗ рдиреНрдпрд╛рдп рди рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдФрд░ рдЕрдкрдиреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░ рдХреЛрдб рд╕рдордЭрд╛рдпрд╛ред

Source: https://habr.com/ru/post/In141833/


All Articles