Java 从URL解析csv文件(位置)并将其动态显示在google地图上

Java 从URL解析csv文件(位置)并将其动态显示在google地图上,java,android,google-maps,Java,Android,Google Maps,我正在进行一个项目,在这个项目中,我必须从一个包含纬度和经度的URL解析CSV文件,并将其显示在地图上。数据的链接是。这里的数据每5分钟更新一次,因此没有保存和读取文件的意义。所以我想动态地阅读它,并在地图上显示它,随着数据的更新,一切都会更新 我在这里做的工作很少,但没有达到预期的效果。相反,它显示了一些错误消息堆栈 我的代码如下 BufferedReader buffer = null; String line; ArrayList<String> la

我正在进行一个项目,在这个项目中,我必须从一个包含纬度和经度的URL解析CSV文件,并将其显示在地图上。数据的链接是。这里的数据每5分钟更新一次,因此没有保存和读取文件的意义。所以我想动态地阅读它,并在地图上显示它,随着数据的更新,一切都会更新

我在这里做的工作很少,但没有达到预期的效果。相反,它显示了一些错误消息堆栈

我的代码如下

    BufferedReader buffer = null;
    String line;
    ArrayList<String> latitudes = new ArrayList<>();
    ArrayList<String> longitudes = new ArrayList<>();
    ArrayList<String> places = new ArrayList<>();
    ArrayList<LatLng> latsLons = new ArrayList<LatLng>();

    try {
        URL url = new URL("https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.csv");
        URLConnection connection = url.openConnection();
        InputStream input = connection.getInputStream();

        buffer = new BufferedReader(new InputStreamReader(input));
        while((line = buffer.readLine()) != null) {
            String[] room = line.split(",");
            latitudes.add(room[1]);
            longitudes.add(room[2]);
            places.add(room[13]);
        }
        latitudes.remove(0); // remove heading
        longitudes.remove(0);
        places.remove(0);
        for (int i = 0; i < latitudes.size(); i++) {
            latsLons.add(new LatLng(Double.parseDouble(latitudes.get(i)),
                    Double.parseDouble(longitudes.get(i))));
        }

    } catch (NullPointerException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (buffer != null) {
            try {
                buffer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    for (LatLng pos: latsLons) {
        mMap.addMarker(new MarkerOptions().position(pos).title("Earthquake place"));
    }
BufferedReader buffer=null;
弦线;
ArrayList纬度=新ArrayList();
ArrayList经度=新ArrayList();
ArrayList places=新的ArrayList();
ArrayList latsLons=新的ArrayList();
试一试{
URL=新URL(“https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.csv");
URLConnection=url.openConnection();
InputStream输入=连接。getInputStream();
buffer=新的BufferedReader(新的InputStreamReader(输入));
而((line=buffer.readLine())!=null){
String[]room=line.split(“,”);
纬度。添加(房间[1]);
经度。添加(房间[2]);
增加(房间[13]);
}
纬度。删除(0);//删除航向
经度。移除(0);
位置。移除(0);
对于(int i=0;i

有人能帮我解决这个问题吗?

你可以使用谷歌的firebase实时数据库服务。它的数据与你的应用程序实时同步。

发布你的错误消息我将错误消息添加为图像。正如堆栈跟踪中的第一行所示,你正在主线程上执行网络i/o: