我正在尝试检查我的 polyline
变量是否包含任何分配的 polylineoptions
。
当 Activity 加载时,onMapReady
方法被自动调用,因此当我尝试将多段线的点设置为空时出现编译器错误(参见下面的代码)
将数据分配给折线看起来像这样:
mMap = googleMap;
double[] firstCoords;
double[] lastCoords;
double[] receivedDataArray;
double latitude;
double longitude;
ArrayList<LatLng> coordList = new ArrayList<LatLng>();
coordList.clear();
polyline.setPoints(null); //ERROR HERE
for (int i = 0; i < coordinatesArray.size() - 1; i++) {
receivedDataArray = coordinatesArray.get(i);
latitude = receivedDataArray[0];
longitude = receivedDataArray[1];
coordList.add(new LatLng(latitude,longitude));
}
options = new PolylineOptions().addAll(coordList).width(10).color(Color.BLUE).geodesic(true);
polyline = mMap.addPolyline(options);
我试图检查折线是否包含任何数据,但在这两项检查中我都遇到了编译器错误:
if(polyline.getOptions() != null){
polyline.setPoints(null);
}
或
if(!polyline.getOptions().isEmpty()) {
polyline.setPoints(null);
}
检查 null 时出错:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.google.android.gms.maps.model.Polyline.getPoints()' on a null object reference
当 Activity 首次加载时,如何检查多段线是否分配了任何点?
最佳答案
从您的“coordList”中删除所有条目并在您的 PolyLine 对象上调用 polyline.remove()
或 mMap.clear()
以在添加新的 LatLng 之前删除所有标记坐标列表的值。
创建这些类变量:
PolyLine mPolyline;
ArrayList<LatLng> mCoordList = new ArrayList<LatLng>();
GoogleMap mMap;
现在您所要做的就是在需要时添加折线:
public void onMapReady(GoogleMap googleMap){
mMap = googleMap;
addPolylineToMap();
}
private void addPolylineToMap(){
double[] receivedDataArray;
double latitude;
double longitude;
// Clear the list first
mCoordList.clear();
for (int i = 0; i < coordinatesArray.size() - 1; i++) {
receivedDataArray = coordinatesArray.get(i);
latitude = receivedDataArray[0];
longitude = receivedDataArray[1];
mCoordList.add(new LatLng(latitude,longitude));
Log.e(TAG, "List size = " + mCoordList.size());
}
//You can also call ...
//mMap.clear();
//...in order to remove all markings on the map
if(mPolyline != null){
mPolyline.remove();
}
options = new PolylineOptions().addAll(coordList).width(10).color(Color.BLUE).geodesic(true);
mPolyline = mMap.addPolyline(options);
}
注意:我认为您可以优化对象 coordinatesArray
以提高效率。
关于java - Android 谷歌地图 - 如何检查折线是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50219837/