zoukankan      html  css  js  c++  java
  • 使用Google Roads API抓取道路信息(java实现)

    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=API_KEY

    当中以“|”切割开的是经纬度坐标。假设将interpolate设置为true,则会返回平滑的路线信息。

    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();
            }

    查询后的结果例如以下图所看到的:



  • 相关阅读:
    Spring事务传播特性NOT_SUPPORTED使用演示
    spring配置基于xml的声明式事务
    反射的简单应用
    MyBatis批处理工具类MyBatisBatchHelper.java
    Mybatis分页插件PageHelper的使用
    利用Spring的Profile加载指定数据源
    Nginx状态信息(status)配置及信息详解
    nginx配置基于域名、端口、IP的虚拟主机
    Nginx Linux安装与部署
    rename 批量修改文件名简单用法
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5079627.html
Copyright © 2011-2022 走看看