Java 如何在android studio中读取txt文件?

Java 如何在android studio中读取txt文件?,java,android,android-studio,Java,Android,Android Studio,我在android studio的资产文件夹中有一个文本文件speedVan.txt,它存储坐标,但是当我运行它时,标记不会出现在地图上。我的代码在下面,谢谢 这是文本文件的内容,文本行之间没有空格: 52.2651 -9.7112 52.2791 -9.7024 52.2800 -9.7675 52.2746 -9.8096 52.1407 -10.1748 52.1296 -10.2493 52.0724 -9.5753 52.1005 -9.6231 52.1021 -9.6276

我在android studio的资产文件夹中有一个文本文件speedVan.txt,它存储坐标,但是当我运行它时,标记不会出现在地图上。我的代码在下面,谢谢

这是文本文件的内容,文本行之间没有空格:

52.2651 -9.7112 52.2791 -9.7024

52.2800 -9.7675 52.2746 -9.8096

52.1407 -10.1748 52.1296 -10.2493

52.0724 -9.5753 52.1005 -9.6231

52.1021 -9.6276 52.1065 -9.6425 

52.0812 -9.2470 52.0542 -9.3850

52.1134 -9.5169 52.1437 -9.5543

52.4096 -9.5167 52.4208 -9.5078

52.4428 -9.4105 52.4491 -9.4474
这是我的活动:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(getAssets().open("speedVan.txt")));
            String line;
            //Log.e("Reader Stuff",reader.readLine());
            while ((line = reader.readLine()) != null) {
                Log.e("code",line);
                String[] ar1 = line.split(" ");

                double startLat = Double.parseDouble(ar1[0]);
                double startLong = Double.parseDouble(ar1[1]);
                double endLat = Double.parseDouble(ar1[2]);
                double endLong = Double.parseDouble(ar1[3]);

                LatLng start = new LatLng(startLat, startLong);
                LatLng end = new LatLng(endLat, endLong);

                mMap.addMarker(new MarkerOptions().position(start).title(""));
                mMap.addMarker(new MarkerOptions().position(end).title(""));
                mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(start,14));

            }

        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

将SupportMapFragment更改为MapFragment。像这样的

MapFragment mapFragment = (MapFragment) getFragmentManager() .findFragmentById(R.id.map);

请删除
并放置一个

而不是:

int startLat = Integer.parseInt(ar1[0]);
int startLong = Integer.parseInt(ar1[1]);;
int endLat = Integer.parseInt(ar1[2]);;
int endLong = Integer.parseInt(ar1[3]);;
请填写:

double startLat = Double.parseDouble(ar1[0]);
double startLong = Double.parseDouble(ar1[1]);
double endLat = Double.parseDouble(ar1[2]);
double endLong = Double.parseDouble(ar1[3]);
我们使用double是因为
LatLng
的构造函数需要两个
double
参数

请注意,由于您的第一个语句
Log.e(“Reader Stuff”,Reader.readLine())将不分析文本文件的第一行,因为正在读取和记录一行,下次调用
reader.readLine()
,您将获得第二行

编辑:

可能您无法看到标记,因为您没有移动地图摄影机。要将相机移动到任何标记,请执行以下操作:

googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(start,14));

start
LatLng
14
是缩放级别。

不,这不起作用,我也输入了文本文件的内容,谢谢。float startat=float.parseFloat(ar1[0]);不起作用?不,这仍然不能为我添加标记,但谢谢你指出,你确定mMap没有被填充。你检查过了吗。可能是显示它的问题。另外,请为标记添加一些相关的标题,以便更好地理解当你说填充时,你是指填充标记吗?我已经分别实现了标记,它们显示没有问题。为标记添加相关标题是什么意思?对不起,我的英语不是很好。谢谢你的帮助,我不知道第一行不会被解析。我已尝试修复它,但仍然没有标记:(您是否尝试更改地图摄像头?请使用您认为有错误的更多代码更新问题。是的,我已更改摄像头并将其移动。我已更新以包含代码,很抱歉,我无法正确设置顶部和结尾的格式,我只遗漏了一些导入语句。如果代码编译良好,则这里必须有某种类型的
IOException
。请在logcat中搜索任何类型的错误。如果在catch块中添加
Log.e()
语句,这将非常有用。