使用Google Maps Android-阅读CSV文件问题

因此,我正在根据此Google Maps示例编写活动:

https://github.com/googlemaps/android-samples/blob/master/tutorials/MapWithMarker/app/src/main/java/com/example/mapwithmarker/MapsMarkerActivity.java

我有api凭据,已使用以下代码从地图中配置并成功显示了静态地图图钉:


    @Override
    public void onmapReady(GoogleMap googleMap) {
        LatLng test = new LatLng(0,45.505);
        googleMap.addMarker(new MarkerOptions().position(test)
                .title("Test Marker"));
        googleMap.moveCamera(CameraUpdateFactory.newLatLng(test));
}

我还有另一个活动,该活动以以下格式附加到位于/storage/emulated/0/csvLogs/source.csv的csv文件中:

日期,标题,lat,长

下面,我尝试编写代码以从csv文件中获取所需格式的每行调用多个令牌。我正在寻找最终结果以显示csv文件中的每一行的地图图钉/标题。也不想从资产加载csv。我想我很亲密,有人请更正此代码+添加我可能需要的任何导入。非常感谢。


import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatactivity;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnmapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import java.io.File;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.lang.String;




public class Mapactivity extends AppCompatactivity
        implements OnmapReadyCallback {
    GoogleMap map;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
        .findFragmentById(R.id.map);
        map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        mapFragment.getMapAsync(this);
    }




    @Override
    public void onmapReady(GoogleMap googleMap) {
        File fileGet = new File("/storage/emulated/0/csvLogs/source.csv");
        try {
            BufferedReader br = new BufferedReader(new FileReader(fileGet));
            String line;
            while ((line = br.readLine()) !=null) {
                String[] token = line.split(",");
                double lat = Double.parseDouble(token[2]);
                double lon = Double.parseDouble(token[3]);
                LatLng Lat = new LatLng(lat,lon);
                googleMap.addMarker(new MarkerOptions().position(Lat).title(token[1]));
                googleMap.moveCamera(CameraUpdateFactory.newLatLng(Lat));
            }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    }
}


目前有0个错误,但没有崩溃就不会打开活动

pl079qj2009 回答:使用Google Maps Android-阅读CSV文件问题

这甚至可以编译吗?这行使我感到困惑:

LatLng Lat = new LatLng(s2=token[2].getText().toString() + "," + s3=token[3].getText().toString());

token是一个字符串数组,因此简单的token [2]将为您提供一个字符串。据我所知,String没有getText()方法,我不确定s2和s3变量的定义位置,也不知道为什么要在字符串表达式的中间分配它们。

假设LatLng具有一个采用此类String的构造函数,则只需执行以下操作即可。

LatLng Lat = new LatLng(token[2] + "," + token[3]);

但是,您非常信任自己的CSV文件格式正确,而我从未做到过。至少要加上

if (token.length >= 4) {

,并用花括号将接下来的三行括起来,因此您不必尝试处理文件中的空行。

您可能还想使用CSV阅读器库,该库可以使CSV阅读更加整洁和可靠。

,

这是最终的工作代码,今天上午工作并进行了测试。

Zag对于格式错误的csv文件是正确的。请确保您要对纯文本数据进行清理和编码,因为纯文本数据中的逗号会干扰正确解析csv文件!





 @Override
    public void onMapReady(GoogleMap googleMap) {
        File fileGet = new File("/storage/emulated/0/csvLogs/demo.csv");
        try {
            BufferedReader br = new BufferedReader(new FileReader(fileGet));
            String line;
            while ((line = br.readLine()) !=null) {
                String[] token = line.split(",");
                double lat = Double.parseDouble(token[2]);
                double lon = Double.parseDouble(token[3]);
                LatLng Lat = new LatLng(lat,lon);
                googleMap.addMarker(new MarkerOptions().position(Lat).title(token[1]));
                googleMap.moveCamera(CameraUpdateFactory.newLatLng(Lat));
            }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    }

```
本文链接:https://www.f2er.com/3140433.html

大家都在问