Google Roads API提供了强大的道路获取接口,用户只需调用相应的API就可以获取相应区域的道路坐标以及道路的限速信息。具体的调用方法如下:
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的值需要替换为用户自己申请的key值。普通开发者每天可以执行上述查询2500次。Java调用Roads API的代码如下:
&interpolate=true
&key=API_KEY
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();
}
查询后的结果如下图所示: