Google Roads API提供了强大的道路获取接口,用户仅仅需调用对应的API就能够获取对应区域的道路坐标以及道路的限速信息。
详细的调用方法例如以下:
https://roads.googleapis.com/v1/snapToRoads?当中以“|”切割开的是经纬度坐标。假设将interpolate设置为true,则会返回平滑的路线信息。path=-35.27801,149.12958|-35.28032,149.12907|-35.28099,149.12929|-35.28144,149.12984|-35.28194,149.13003|-35.28282,149.12956|-35.28302,149.12881|-35.28473,149.12836
&interpolate=true
&key=API_KEY
key的值须要替换为用户自己申请的key值。
普通开发人员每天能够运行上述查询2500次。Java调用Roads API的代码例如以下:
StringBuffer document = new StringBuffer(); try { String str_url = "https://roads.googleapis.com/v1/snapToRoads?path=-35.27801,149.12958|-35.28032,149.12907|-35.28099,149.12929|-35.28144,149.12984|-35.28194,149.13003|-35.28282,149.12956|-35.28302,149.12881|-35.28473,149.12836&interpolate=true&key=YourKeyHere"; URL url = new URL(str_url);//远程url URLConnection conn = url.openConnection(); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; int line_number = 0; while ((line = reader.readLine()) != null) { line_number += 1; if (line.startsWith(" "latitude": ")) { line = line.replaceAll(" "latitude": ", ""); document.append(line + " "); System.out.print(line); } if (line.startsWith(" "longitude": ")) { line = line.replaceAll(" "longitude": ", ""); document.append(line + " "); System.out.println(line); } } if (line_number < 20) { System.out.println("error"); } reader.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
查询后的结果例如以下图所看到的: