gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:19:56 24 4
gpt4 key购买 nike

所以我正在根据这个谷歌地图示例编写一个 Activity :

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

我有 API 凭据,已使用以下代码在 map 中配置并成功显示静态 map 图钉:


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

我有另一个 Activity 附加到位于/storage/emulated/0/csvLogs/source.csv 的 csv 文件,格式如下:

日期、标题、纬度、经度

下面我尝试编写代码,以 csv 文件所需的格式每行调用多个标记。我正在寻找最终结果以显示 csv 文件中每一行的 map 图钉/标题。也不希望从 Assets 中加载 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 个错误,但打开 Activity 时会崩溃

最佳答案

这还能编译吗?这句话让我困惑:

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

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

假设 LatLng 有一个接受这样一个字符串的构造函数,那么只需执行以下操作即可。

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

但是,您确实相信您的 CSV 文件格式正确,但我永远不会这样做。至少,添加一行像

if (token.length >= 4) {

并用大括号括住接下来的三行,这样您就不会尝试处理文件中的空行。

您可能还想使用 CSV 读取器库,它可以使您的 CSV 读取更加清晰、更加可靠。

关于java - 使用 Google Maps Android - 读取 CSV 文件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58760029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com