我在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();
}
}
}
答案 0 :(得分:0)
将SupportMapFragment更改为MapFragment。像这样
MapFragment mapFragment = (MapFragment) getFragmentManager() .findFragmentById(R.id.map);
答案 1 :(得分:0)
请删除您使用过的;;
,然后放一个;
而不是:
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
是缩放级别。