рдЖрдкрдХреЗ Android рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ Google рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд▓реЗрдЦ
рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХрд╛ рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╢рд╛рдпрдж рдпрд╣ рдЧреВрдЧрд▓-рдореИрдкреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рдЪрд╛рд░ рджреЗрдЧрд╛ рдФрд░ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдЬрд▓реНрджреА рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред
рд╣рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдорд┐рд▓рддреЗ рд╣реИрдВ
рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ Google рд╣рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рдмреАрдЪ рдорд╛рд░реНрдЧреЛрдВ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдЧрд╛рдореА рдХрд╛рд░реНрдп рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрд░рдЪрдирд╛ рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:
- рд╣рдо рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреБрд░реЛрдз рдмрдирд╛рддреЗ рд╣реИрдВ
- рд╣рдо рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ
- рдкрд░рд╕рд┐рдо рдЙрддреНрддрд░
- рдирдХреНрд╢реЗ рдкрд░ рдУрд╡рд░рд▓реЗ рдбреНрд░рд╛ рдХрд░реЗрдВ
рдЧрдарди рдХрд╛ рдЕрдиреБрд░реЛрдз
Google рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдкреВрд░рд╛ рд╡рд┐рд╡рд░рдг рдорд┐рд▓ рд╕рдХрддрд╛
рд╣реИ ред рдпрд╣рд╛рдВ рдореИрдВ рдореБрдЦреНрдп рдкрд╣рд▓реБрдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЕрдиреБрд░реЛрдз рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
http://maps.googleapis.com/maps/api/directions/output?parameters
рдЬрд╣рд╛рдВ
рдЖрдЙрдЯрдкреБрдЯ 2 рдорд╛рди рд▓реЗ рд╕рдХрддрд╛ рд╣реИ:
- json - рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдиреЛрдЯреЗрд╢рди (JSON) рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ;
- xml - рдЖрдЙрдЯрдкреБрдЯ рдХреЛ XML рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред
Google рд╕реНрд╡рдпрдВ рд╣рдореЗрдВ JSON рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХрд░рддрд╛ рд╣реВрдВред
рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рднрд┐рдиреНрди рдЖрд╡рд╢реНрдпрдХ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рдЗрддрдирд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХреЗрдВред рдореИрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ 3 рдореБрдЦреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдмрд┐рдирд╛ рдЕрд╕рдлрд▓рддрд╛ рдХреЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдЙрддреНрдкрддреНрддрд┐ - рдорд╛рд░реНрдЧ рдХреЗ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдХреЗ рдЕрдХреНрд╖рд╛рдВрд╢ рдФрд░ рджреЗрд╢рд╛рдВрддрд░ рдХрд╛ рдкрддрд╛ рдпрд╛ рдкрд╛рда рдореВрд▓реНрдпред
- рдЧрдВрддрд╡реНрдп - рдорд╛рд░реНрдЧ рдХреЗ рдЕрдВрддрд┐рдо рдЧрдВрддрд╡реНрдп рдХреЗ рдЕрдХреНрд╖рд╛рдВрд╢ рдФрд░ рджреЗрд╢рд╛рдВрддрд░ рдХрд╛ рдкрддрд╛ рдпрд╛ рдкрд╛рда рдореВрд▓реНрдпред
- рд╕реЗрдВрд╕рд░ - рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд╕реНрдерд╛рди рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗрдВрд╕рд░ рд╕реЗ рдорд╛рд░реНрдЧ рдЕрдиреБрд░реЛрдз рдЖ рд░рд╣рд╛ рд╣реИред рдорд╛рдиреНрдп рдореВрд▓реНрдп рд╕рддреНрдп рдпрд╛ рдЕрд╕рддреНрдп рд╣реИрдВред
рдЕрдВрдд рдореЗрдВ, JSON рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЕрдиреБрд░реЛрдз (рд╡реЛрд░реЛрдирд┐рд╢ рд╕реЗ рдорд╛рд╕реНрдХреЛ рддрдХ) рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
http://maps.googleapis.com/maps/api/directions/json?origin= рд╡реЛрд░реЛрдирд┐рд╢ рдФрд░ рдЧрдВрддрд╡реНрдп = рдорд╛рд╕реНрдХреЛ рдФрд░ рд╕реЗрдВрд╕рд░ = рдЧрд▓рдд
рдореИрдВ рдХреЛрдб рдХреЛ рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдирд╣реАрдВ рд▓рд╛рдКрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рдХреА рдкрдВрдХреНрддрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд╣реА рдорд╛рдореВрд▓реА рд╣реИред
рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдирд╛ рдФрд░ рдПрдХ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рддреЛ, рдЕрдиреБрд░реЛрдз рдмрдирддрд╛ рд╣реИ, рдпрд╣ рднреЗрдЬрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рд╕реЗрд╡рд╛ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдкрд░ рд╕рдВрднрд╡рддрдГ рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ 2 рд▓рд╛рдЗрдиреЛрдВ рддрдХ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ
рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рдареАрдХ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛, рдЗрд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд░рдЦрд╛, рдЕрдиреБрд░реЛрдз рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
RestTemplate rTemplate = new RestTemplate(); String jsonResponse = rTemplate.getForObject(query, String.class));
рдЙрддреНрддрд░ рджреЗрдирд╛
рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ json рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ, рдЬрд┐рд╕рдореЗрдВ рдорд╛рд░реНрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдЕрдкрдирд╛ рдУрд╡рд░рд▓реЗ рдбреНрд░рд╛ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдЕрдиреНрдп рд╕рднреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛, рдЖрдк
Google рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрди рд╕рднреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдЬрд╛рдЬ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ, рдХреЛрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
public ArrayList<Section> parse(JSONObject jsonObject) throws AuthenticationException { ArrayList<Section> list = new ArrayList<Section>(); Location startGeo; Location endGeo; 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"); startGeo = new Location(""); endGeo = new Location(""); startGeo.setLatitude(startP.optDouble("lat")); startGeo.setLongitude(startP.optDouble("lng")); endGeo.setLatitude(endP.optDouble("lat")); endGeo.setLongitude(endP.optDouble("lng")); list.add(new Section(startGeo.getLatitude(), startGeo.getLongitude(), endGeo.getLatitude(), endGeo.getLongitude() , encodedPoints)); } return list; }
рдореБрдЦреНрдп рд╕реВрдЪрдирд╛ рдЬреЛ рд╣рдореЗрдВ "рдЪрд░рдг" рд╕рд░рдгреА рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рдХреА рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
"steps": [ { "travel_mode": "DRIVING", "start_location": { "lat": 41.8507300, "lng": -87.6512600 }, "end_location": { "lat": 41.8525800, "lng": -87.6514100 }, "polyline": { "points": "a~l~Fjk~uOwHJy@P", "levels": "B?B" }, "duration": { "value": 19, "text": "1 min" }, "html_instructions": "Head \u003cb\u003enorth\u003c/b\u003e on \u003cb\u003eS Morgan St\u003c/b\u003e toward \u003cb\u003eW Cermak Rd\u003c/b\u003e", "distance": { "value": 207, "text": "0.1 mi" } }, ...
рдЪрд░рдг рд╕рд░рдгреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдореЗрдВ рдлрд╝реАрд▓реНрдб start_location рдФрд░ end_location рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рдпреЗ рдорд╛рд░реНрдЧ рдХреЗ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг, рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣реИрдВ, рдЬреИрд╕реЗ рдЙрджрд╛рд╣рд░рдг рдЪреМрд░рд╛рд╣реЛрдВ рдХреЗ рд▓рд┐рдПред рдпрджрд┐ рдЖрдк рдорд╛рд╕реНрдХреЛ рд╕реЗ рд╡реЛрд░реЛрдирд┐рд╢ рддрдХ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд▓рдЧрднрдЧ 20 рдРрд╕реЗ рдмрд┐рдВрджреБ рд╣реЛрдВрдЧреЗред рд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╛рдкрд╛рд░, 20 рдЕрдВрдХ рд╕реЗ рдбреНрд░рд╛рдЗрдВрдЧ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рддреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдореЗрдВ рдкреЙрд▓реАрд▓рд╛рдЗрди рдХреНрд╖реЗрддреНрд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдореЗрдВ рджреЛ рдФрд░ рдлрд╝реАрд▓реНрдб "рдЕрдВрдХ" рдФрд░ "рд╕реНрддрд░" рд╢рд╛рдорд┐рд▓ рд╣реИрдВред "рдЕрдВрдХ" рдХреА рд╕рд╛рдордЧреНрд░реА рдЦреМрдлрдирд╛рдХ рд▓рдЧрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпреЗ рд╣рдорд╛рд░реЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣реИрдВ, рдЬреЛ
рдЗрд╕ рддрд░рд╣ рдПрдиреНрдХреЛрдбреЗрдб
рд╣реИрдВ ред рдЖрдкрдХреЛ рдбрд░рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП, рд╣рдо рд╕рдм рдХреБрдЫ рд▓реЗрдХрд░ рдЖрдП рд╣реИрдВ,
рд╣рдо рдЗрд╕реЗ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдорд┐рд▓рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдЕрдкрдиреА рд╕рдбрд╝рдХ рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рд▓рд╛рдЗрди "рдкреЙрд▓реАрд▓рд╛рдЗрди" "рдЪрд░рдгреЛрдВ" рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред
рдУрд╡рд░рд▓реЗ рдбреНрд░рд╛ рдХрд░реЗрдВ
рдлрд┐рд▓рд╣рд╛рд▓, рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЕрдиреБрд░реЛрдз рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕реЗ рдХреИрд╕реЗ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрддреНрддрд░ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВред рдЗрд╕ рд╕рдм рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдордиреНрд╡рдп рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдореЗрдВ рдЕрдкрдирд╛ рд░рд╛рд╕реНрддрд╛ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
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 рджрд┐рд╢рд╛ API - рдЗрд╕ рд╕реЗрд╡рд╛ рдХреА рдкреВрд░реА рдЬрд╛рдирдХрд╛рд░реАред
рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ - Google рд╕реЗрд╡рд╛ рдХреЗ рдЖрд░рд╛рдо рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рд░реВрдкрд░реЗрдЦрд╛ред рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВред
рдкреЙрд▓реАрд▓рд╛рдЗрди рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдлреЙрд░реНрдореЗрдЯрдЕрдкрдиреА рдЯреВрдЯреА рд╣реБрдИ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдХреИрд╕реЗ рдбреАрдХреЛрдб рдХрд░реЗрдВ?