Java 使用谷歌地图Android-读取CSV文件问题
所以我写了一个基于谷歌地图的活动: 我拥有api凭据,已使用以下代码配置并成功显示地图中的静态地图pin:Java 使用谷歌地图Android-读取CSV文件问题,java,android,google-maps,Java,Android,Google Maps,所以我写了一个基于谷歌地图的活动: 我拥有api凭据,已使用以下代码配置并成功显示地图中的静态地图pin: @Override public void onMapReady(GoogleMap googleMap) { LatLng test = new LatLng(0, 45.505); googleMap.addMarker(new MarkerOptions().position(test) .title
@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文件:
日期、头衔、纬度、长度
下面,我尝试编写代码,以csv文件中所需的格式每行调用多个令牌。我正在寻找最终结果,以显示csv文件中每一行的地图pin/标题。也不希望从资产加载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个错误,但在不崩溃的情况下无法打开“活动”这是否编译?这句话让我困惑:
LatLng Lat = new LatLng(s2=token[2].getText().toString() + "," + s3=token[3].getText().toString());
令牌是一个字符串数组,所以简单地说,令牌[2]将为您提供一个字符串。String没有GETTeX()方法,据我所知,我不确定S2和S3变量的定义,也不知道为什么要在字符串表达式中间分配给它们。
假设LatLng有一个接受这样一个字符串的构造函数,那么只需要下面的代码就可以了
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();
}
}
```