рд╢реБрдн рджреЛрдкрд╣рд░, рдЦрд╛рдмрд░реЛрд╡рд╕реНрдХ рдирд┐рд╡рд╛рд╕реАред
рдореИрдВ Google рдорд╛рдирдЪрд┐рддреНрд░ API рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдереЛрдбрд╝рд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдЬрд▓реНрджреА рдореЗрдВ рд╣реВрдВред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЬрд┐рдпреЛрдХреЛрдбрд┐рдВрдЧ, рдЬрд┐рдпреЛрдбреЗрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред
рдмрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдк рдЕрдВрдХ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдФрд░ рдорд╛рд░реНрдЧреЛрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдкрд░ рд╕реНрдкрд░реНрд╢ рдХрд░реВрдВрдЧрд╛ "рдЬрд╣рд╛рдВ рдпрд╛ рд╡рд╣рд╛рдВ рдХрд░реАрдм рдЬрд╛рдирд╛ рд╣реИред"
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдЙрдкрдХрд░рдг
Google рдореИрдкреНрд╕ API рд╡реЗрдм рд╕реЗрд╡рд╛рдПрдБ
json рдФрд░
xml рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрджреЗрд╢ рд▓реМрдЯрд╛ рд╕рдХрддреА рд╣реИрдВред Google json рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ рдЕрдзрд┐рдХ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЫреЛрдЯрд╛ рдФрд░ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реИред Json рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо
org.json рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдпрд╣ рдмрдбрд╝реА рдирд╣реАрдВ рд╣реИ рдФрд░ рдЙрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рддреА рд╣реИ рдЬрд┐рдирдХреА рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рдо рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдЕрдорд░реВрдж рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдЦреИрд░ рдФрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, jdk 1.6ред
рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдФрд░ json рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо
JsonReader рдХреНрд▓рд╛рд╕ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
public class JsonReader { private static String readAll(final Reader rd) throws IOException { final StringBuilder sb = new StringBuilder(); int cp; while ((cp = rd.read()) != -1) { sb.append((char) cp); } return sb.toString(); } public static JSONObject read(final String url) throws IOException, JSONException { final InputStream is = new URL(url).openStream(); try { final BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); final String jsonText = readAll(rd); final JSONObject json = new JSONObject(jsonText); return json; } finally { is.close(); } } }
рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдЕрдиреБрд░реЛрдз рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЕрдВрддрддрдГ рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ рдлрд╛рд░реНрдо рдХреА
1 рдХрд╛ рдПрдХ рд░рд╛рд╕реНрддрд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП
= value1 & key2 = value2 ... , рд╣рдо рдПрдХ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦреЗрдВрдЧреЗред
private static String encodeParams(final Map<String, String> params) { final String paramsUrl = Joiner.on('&').join(
рд╣рдордиреЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ, рдЪрд▓реЛ рдмрд┐рдВрджреБ рдкрд░ рдЖрддреЗ рд╣реИрдВред
рдЬрд┐рдпреЛрдХреЛрдбрд┐рдВрдЧ рдФрд░ рдЬрд┐рдпреЛрдбреЗрдХреЛрдбрд┐рдВрдЧ
рдЬрд┐рдпреЛрдХреЛрдбрд┐рдВрдЧ рднреМрдЧреЛрд▓рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (рдЬреИрд╕реЗ рдЕрдХреНрд╖рд╛рдВрд╢ 37.423021 рдФрд░ рджреЗрд╢рд╛рдВрддрд░ -122.0883739) рдХреЗ рдкрддреЗ (рдЬреИрд╕реЗ рдХрд┐ 1600 рдПрдореНрдлреАрдерд┐рдПрдЯрд░ рдкрд╛рд░реНрдХрд╡реЗ, рдорд╛рдЙрдВрдЯреЗрди рд╡реНрдпреВ, рд╕реАрдП) рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рд░реНрдХрд░реЛрдВ рдХреЛ рд░рдЦрдиреЗ рдпрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред Google рдЬрд┐рдпреЛрдХреЛрдбрд┐рдВрдЧ рдПрдкреАрдЖрдИ рд╕реЗрд╡рд╛ рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд┐рдпреЛрдХреЛрдбрд░ рддрдХ рд╕реАрдзреА рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рд╕рд╛рде рд╣реА, рдпрд╣ рд╕реЗрд╡рд╛ рдЖрдкрдХреЛ рд╡рд┐рдкрд░реАрдд рдХреНрд░рд┐рдпрд╛ (рдкрддреЛрдВ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рдЕрдиреБрд╡рд╛рдж) рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░рд┐рд╡рд░реНрд╕ рдЬрд┐рдпреЛрдХреЛрдбрд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рд░реВрд╕, рдореЙрд╕реНрдХреЛ, рдкреЛрдХрд▓реЛрдирд╛рдпрд╛ рд╕реНрдЯреНрд░реАрдЯ 12 рдХреЗ рдкрддреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЬрд┐рдпреЛрдХреЛрдбрд┐рдВрдЧ рд╕реЗрд╡рд╛ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
maps.googleapis.com/maps/api/geocode/output?parameters рд╕реЗрд╡рд╛ рдХрд╛ рдкрде,
рдпрд╣рд╛рдВ рдФрд░
рдпрд╣рд╛рдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛
рд╣реИ ред
public static void main(final String[] args) throws IOException, JSONException { final String baseUrl = "http://maps.googleapis.com/maps/api/geocode/json";// Geocoding API HTTP final Map<String, String> params = Maps.newHashMap(); params.put("sensor", "false");// params.put("address", ", , , 12");// , final String url = baseUrl + '?' + encodeParams(params);// System.out.println(url);// , final JSONObject response = JsonReader.read(url);// // // //results[0]/geometry/location/lng //results[0]/geometry/location/lat JSONObject location = response.getJSONArray("results").getJSONObject(0); location = location.getJSONObject("geometry"); location = location.getJSONObject("location"); final double lng = location.getDouble("lng");// final double lat = location.getDouble("lat");// System.out.println(String.format("%f,%f", lat, lng));// }
рдХрдВрд╕реЛрд▓:
http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F%2C+%D0 % 9C% D0% BE% D1% 81% D0% BA% D0% B2% D0% B0% 2C +% D1% 83% D0% BB% D0% B8% D1% 86% D0% 9% D0% 9%% D0% % BE% D0% BA% D0% BB% D0% BE% D0% BD% D0% BD% D0% B0% D1% 8F% 2C + 12
55.735893,37.527420
рдЕрдм рд╣рдо рд░рд┐рд╡рд░реНрд╕ рдСрдкрд░реЗрд╢рди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ
рдЕрдХреНрд╖рд╛рдВрд╢ рдХреЗ рд╕рд╛рде рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ
рдкрддреЗ рдХреА рдЬрдЧрд╣ рд╣реЛрдЧреА
public static void main(final String[] args) throws IOException, JSONException { final String baseUrl = "http://maps.googleapis.com/maps/api/geocode/json";
рдХрдВрд╕реЛрд▓:
http://maps.googleapis.com/maps/api/geocode/json?sensor=false&latlng=55.735893%2C37.527420&language=ru
рдкреЛрдХрд▓реЛрдирд╛рдпрд╛ рд╕реЗрдВрдЯ, 12, рдореЙрд╕реНрдХреЛ, рд░реВрд╕, 121170
рдЕрдВрдХреЛрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХреА рдЧрдгрдирд╛
рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рд╕реВрддреНрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреБрд▓ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реЛрдЧрд╛ред
private static final double EARTH_RADIUS = 6371.;
рдХрдВрд╕реЛрд▓:
http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F%2C+%D0 % 9C% D0% BE% D1% 81% D0% BA% D0% B2% D0% B0% 2C +% D1% 83% D0% BB% D0% B8% D1% 86% D0% 9% D0% 9%% D0% % BE% D0% BA% D0% BB% D0% BE% D0% BD% D0% BD% D0% B0% D1% 8F% 2C + 12
рд░реВрд╕, рдорд╛рд╕реНрдХреЛ, рдкреЛрдХрд▓реЛрдиреНрдирдпрд╛ рд╕рдбрд╝рдХ, 12 55.7358925,37.5274195
http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F%2C+%D0 % 9C% D0% BE% D1% 81% D0% BA% D0% B2% D0% B0% 2C +% D1% 81% D1% 82% D0% B0% D0% B0% 86% D0% B8% D1% % 8F +% D0% BC% D0% B5% D1% 82% D1% 80% D0% BE +% D0% 9F% D0% B0% D1% 80% D0% BA +% D0% 9F% D0% B0% B1% % D0% B5% D0% B4% D1% 8B
рд░реВрд╕, рдорд╛рд╕реНрдХреЛ, рдореЗрдЯреНрд░реЛ рд╕реНрдЯреЗрд╢рди рд╡рд┐рдЬрдп рдкрд╛рд░реНрдХ 55.736217,37.516838
рджреВрд░реА: 0.6634200825814502
рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдПрдХ рд╕реАрдзреА рд░реЗрдЦрд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛, рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦреЗрдЧрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, Google рджрд┐рд╢рд╛-рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдорд╛рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХреА рдЧрдгрдирд╛
Google Directions API рдПрдХ рдРрд╕реА рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ HTTP рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рдорд╛рд░реНрдЧреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддреА рд╣реИред рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ, рдкреНрд░рд╕реНрдерд╛рди рдФрд░ рдЧрдВрддрд╡реНрдп рдХреЗ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдкрд╛рда рд╕реНрдЯреНрд░рд┐рдВрдЧ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢рд┐рдХрд╛рдЧреЛ, рдЗрд▓рд┐рдиреЛрдЗрд╕ рдпрд╛ рдбрд╛рд░реНрд╡рд┐рди, рдиреНрдпреВ рд╕рд╛рдЙрде рд╡реЗрд▓реНрд╕, рдСрд╕реНрдЯреНрд░реЗрд▓рд┐рдпрд╛) рдпрд╛ рдЕрдХреНрд╖рд╛рдВрд╢ рдФрд░ рджреЗрд╢рд╛рдВрддрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред Directions API рдХрдИ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдХрдИ рдмрд┐рдВрджреБрдУрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреА рд╣реИред
рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
maps.googleapis.com/maps/api/directions/output?parameters рд╕реЗрд╡рд╛ рдХрд╛ рдкрде,
рдпрд╣рд╛рдВ рдФрд░
рдпрд╣рд╛рдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛
рд╣реИ ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдкреЛрдХрд▓реЛрдирд╛рдпрд╛ рд╕реНрдЯреНрд░реАрдЯ рд╕реЗ 12, рд╡рд┐рдХреНрдЯреНрд░реА рдкрд╛рд░реНрдХ рдореЗрдЯреНрд░реЛ рд╕реНрдЯреЗрд╢рди рддрдХ рдЬрд╛рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ:
public static void main(final String[] args) throws IOException, JSONException { final String baseUrl = "http://maps.googleapis.com/maps/api/directions/json";
рдХрдВрд╕реЛрд▓
http://anonymouse.org/cgi-bin/anon-www.cgi/http://maps.googleapis.com/maps/api/directions/json?sensor=false&origin=%D0%A0%D0%BE%D1 % 81% D1% 81% D0% B8% D1% 8F% 2C +% D0% 9C% D0% BE% D1% 81% D0% BA% D0% B2% D0% B0% 2C +% D1% 83% D0% BB % D0% B8% D1% 86% D0% B0 +% D0% 94% D0% B5% D0% B%% D0% B8% D1% 81% D0% B0 +% D0% 94% D0% B0% D0% B2% D1% % 8B% D0% B4% D0% BE% D0% B2% D0% B0% 2C + 7 рдФрд░ рднрд╛рд╖рд╛ = рдЦрдВрдб рдФрд░ рдЧрдВрддрд╡реНрдп =% D0% A0% D0% BE% D1% 81% D1% 81% D0% B8% D1% 8F% 2C +% D0% 9C% D0% BE% D1% 81% D0% BA% D0% B2% D0% B0% 2C +% D1% 83% D0% BB0 D0% B8% 1% 86% D0% B0% +% D0% 9A% D1% 83% D0% BB% D1% 8C% D0% BD% D0% B5% D0% B2% D0% B0 + 3 рдФрд░ рдореЛрдб = рдЪрд▓рдирд╛
0.9 рдХрд┐рдореА
10 рдорд┐рдирдЯ
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдЕрдЧрд░ рд╣рдо рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдореЗрдЯреНрд░реЛ рд╕реНрдЯреЗрд╢рди рд╡рд┐рдХреНрдЯреНрд░реА рдкрд╛рд░реНрдХ рдпрд╛ рдореЗрдЯреНрд░реЛ рд╕реНрдЯреЗрд╢рди рдХреБрддреБрдЬрд╝реЛрд╡рд╕реНрдХрд╛рдпрд╛, 12 рд╕реЗ рдкреЛрдХрд▓реЛрдирд╛рдпрд╛ рдЧрд▓реА рд╕реЗ рдЬрд╛рдиреЗ рдХреЗ рдХрд░реАрдм рд╣реИред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Google рдбрд┐рд╕реНрдЯреЗрдВрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ API рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИред
рдЖрд░рдВрдн рдФрд░ рд╕рдорд╛рдкреНрддрд┐ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рджреВрд░реА рдФрд░ рдпрд╛рддреНрд░рд╛ рдХреЗ рд╕рдордп рдХреА рдЧрдгрдирд╛
Google рдбрд┐рд╕реНрдЯреЗрдВрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрдкреАрдЖрдИ рдПрдХ рдРрд╕реА рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ рдкреНрд░рд╛рд░рдВрдн рдФрд░ рд╕рдорд╛рдкреНрддрд┐ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рджреВрд░реА рдФрд░ рдпрд╛рддреНрд░рд╛ рдХреЗ рд╕рдордп рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред Google рдореИрдкреНрд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрдгрдирд╛ рд╢реБрд░реВ рдФрд░ рдЕрдВрдд рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдорд╛рд░реНрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝реА рдХреЗ рд▓рд┐рдП рдЕрд╡рдзрд┐ рдФрд░ рджреВрд░реА рдорд╛рди рдпреБрдХреНрдд рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред
Maps.googleapis.com/maps/api/distancematrix/output?parameters рд╕реЗрд╡рд╛, рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдорд╛рд░реНрдЧ,
рдпрд╣рд╛рдВ рдФрд░
рдпрд╣рд╛рдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛
рд╣реИ ред
public static void main(final String[] args) throws IOException, JSONException { final String baseUrl = "http://maps.googleapis.com/maps/api/distancematrix/json";
рдХрдВрд╕реЛрд▓
http://maps.googleapis.com/maps/api/distancematrix/json?sensor=false&destinations=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F%2C+%D0 % 9C% D0% BE% D1% 81% D0% BA% D0% B2% D0% B0% 2C +% D1% 81% D1% 82% D0% B0% D0% B0% 86% D0% B8% D1% % 8F +% D0% BC% D0% B5% D1% 82% D1% 80% D0% BE +% D0% 9F% D0% B0% D1% 80% D0% BA +% D0% 9F% D0% B0% B1% % D0% B5% D0% B4% D1% 8B% 7C% D0% A0% D0% BE% D1% 81% D1% 81% D0% B8% D1% 8F% 2% +% D0% 9C% D0% BE1% D1% % 81% D0% BA% D0% B2% D0% B0% 2C +% D1% 81% D1% 82% D0% B0% D0% BD% D1% 86% D0% B8% 8% +% D0% BC% D0% % B5% D1% 82% D1% 80% D0% BE +% D0% 9A% D1% 83% D1% 82% D1% 83% D0% B7% D7% BE% D0% B2A D1% 81% D0% BA % D0% B0% D1% 8F рдФрд░ рдЙрддреНрдкрддреНрддрд┐ =% D0% A0% D0% BE% D1% 81% D1% 81% D0% B8% D1% 8F% 2C +% D0% 9C% D0% BE1% 81% D1% 81% D0% BA% D0% B2% D0% B0% 2C +% D1% 83% D0% BB% D0% B8% D1% 86% D0% B0 +% D0% 9F% D0% BE% 0%% B0% B0% B0% D0% BE% D0% BD% D0% BD% D0% B0% D1% 8F% 2C + 12 рдФрд░ рднрд╛рд╖рд╛ = en & рдореЛрдб = рдЪрд▓рдирд╛
рд░реВрд╕, рдорд╛рд╕реНрдХреЛ, рдореЗрдЯреНрд░реЛ рд╕реНрдЯреЗрд╢рди рдХреБрддреБрдЬрд╝реЛрд╡рд╕реНрдХрд╛рдпрд╛
0.8 рдХрд┐рдореА
9 рдорд┐рдирдЯ
рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдкрддрд┐-рдкрддреНрдиреА рдмреИрдВрдХ рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдпрд╛ рдкреЛрд╕реНрдЯ рдСрдлрд┐рд╕ рдЬрд╛рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИрдВред
рдЙрдкрдпреЛрдЧ рдкреНрд░рддрд┐рдмрдВрдз
рдЕрдХреЗрд▓реЗ Google, рд▓реЗрдХрд┐рди рд╣рдо рд╕рднреА рдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рдХреБрдЫ рд╣реИред рдпрд╣ рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ рдХрд┐ рдпреЗ рд╕реЗрд╡рд╛рдПрдВ рд╣рд░ рджрд┐рди рдХрд┐рддрдиреЗ рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИрдВред рд▓реЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдЪреНрдЫрд╛ рдирд┐рдЧрдо рдиреЗ рдЕрдкрдиреА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛ рджрд┐рдпрд╛ред
рдЖрдЬ, рдЖрдк рдкреНрд░рддрд┐ рджрд┐рди рдПрдХ рдЖрдИрдкреА рд╕реЗ 2500 рд╕реЗ рдЕрдзрд┐рдХ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 10 рд╕реЗ рдЕрдзрд┐рдХ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдо OVER_QUERY_LIMIT рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рд░рд┐рдХреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, URL рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 2048 рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдорд╛рд░реНрдЧреЛрдВ рдХреА рд╕рд╛рдЬрд┐рд╢ рдХрд░рддреЗ рд╕рдордп рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред
рд╕рдВрджрд░реНрдн
developers.google.com/maps/documentation/geocoding/?hl=rudevelopers.google.com/maps/documentation/directions/?hl=rudevelopers.google.com/maps/documentation/distancematrix/?hl=ruUPD: рдореИрдВрдиреЗ
github.com/nestor-by/map-api-samples рдХреЗ рд╕реНрд░реЛрдд рдкреЛрд╕реНрдЯ рдХрд┐рдП рд╣реИрдВ