poiSearchInfo.getLatLng() == null ? latLng : poiSearchInfo.getLatLng() 这个代码说的是不是,poiSearchInfo.getLatLng()是空的,就拿latLng的值?
时间: 2024-04-12 07:33:19 浏览: 108
是的,这段代码是一个三元运算符的使用示例,用于判断 `poiSearchInfo.getLatLng()` 是否为 `null`,如果是,则返回 `latLng` 的值,否则返回 `poiSearchInfo.getLatLng()` 的值。
具体解释如下:
1. 如果 `poiSearchInfo.getLatLng()` 的值为 `null`,则表达式的结果为 `latLng` 的值。这种情况下,代码会使用 `latLng` 的值来代替 `poiSearchInfo.getLatLng()`。
2. 如果 `poiSearchInfo.getLatLng()` 的值不为 `null`,则表达式的结果为 `poiSearchInfo.getLatLng()` 的值。这种情况下,代码会使用 `poiSearchInfo.getLatLng()` 的值。
这段代码主要用于处理可能出现的空值情况,以确保在获取经纬度信息时不会出现空指针异常。根据实际需求和上下文,可以将返回的经纬度信息赋值给相应的变量或进行其他处理。
希望能对你有所帮助!如有任何问题,请随时提问。
相关问题
poiList是这种格式的private List<NaviPoi> poiList = new ArrayList();获取不了poiList.get(i).getLatLng()
如果你的`NaviPoi`类中没有`getLatLng()`方法,那么你需要先为`NaviPoi`类添加一个`getLatLng()`方法,用于获取途经点的经纬度信息。例如:
```
public class NaviPoi {
private String name;
private LatLng latLng;
public NaviPoi(String name, LatLng latLng) {
this.name = name;
this.latLng = latLng;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public LatLng getLatLng() {
return latLng;
}
public void setLatLng(LatLng latLng) {
this.latLng = latLng;
}
}
```
在这个`NaviPoi`类中,我们添加了一个`getLatLng()`方法,用于获取途经点的经纬度信息。
在你的代码中,如果要获取第i个途经点的经纬度信息,可以使用以下代码:
```
LatLng latLng = poiList.get(i).getLatLng();
```
这个代码会从`poiList`中获取第i个途经点的信息,并调用`getLatLng()`方法获取途经点的经纬度信息。
if (!marker.isRemoved()) { //删除途经点 int deletePosition = -1; for (int i = 0; i < poiList.size(); i++) { if (poiList.get(i).getLatLng().equals(marker.getPosition())) { deletePosition = i; break; } } if (deletePosition != -1) { poiList.remove(deletePosition); int strategy = mAMapNavi.strategyConvert(congestion, avoidhightspeed, cost, hightspeed, true); mAMapNavi.calculateDriveRoute(start, end, poiList, strategy); } else { Log.e("TAG", "未找到对应的途经点"); } Log.e("TAG", "点击途经点:" + marker.getPosition()); } return true; } 这个删除不了poilist中的途经点,没有getLatLng() 方法,也没法添加,换个方式去实现
如果您无法使用 `getLatLng()` 方法,可以通过其他方式来删除 `poilist` 中的途经点。一种可能的方式是,将途经点的位置信息存储在 `poilist` 中,然后与地图上的标记进行比较,以确定要删除的途经点。
具体来说,您可以在往 `poilist` 中添加途经点时,将途经点的位置信息(经纬度)作为一个对象存储在 `poilist` 中,例如:
```
class PoiItem {
private double latitude;
private double longitude;
public PoiItem(double latitude, double longitude) {
this.latitude = latitude;
this.longitude = longitude;
}
public double getLatitude() {
return latitude;
}
public double getLongitude() {
return longitude;
}
}
```
然后在删除途经点时,遍历 `poilist`,与地图上的标记进行比较,以确定要删除的途经点。例如:
```
int deletePosition = -1;
for (int i = 0; i < poiList.size(); i++) {
PoiItem poiItem = poiList.get(i);
LatLng poiLatLng = new LatLng(poiItem.getLatitude(), poiItem.getLongitude());
if (poiLatLng.equals(marker.getPosition())) {
deletePosition = i;
break;
}
}
if (deletePosition != -1) {
poiList.remove(deletePosition);
int strategy = mAMapNavi.strategyConvert(congestion, avoidhightspeed, cost, hightspeed, true);
mAMapNavi.calculateDriveRoute(start, end, poiList, strategy);
} else {
Log.e("TAG", "未找到对应的途经点");
}
```
这样,您就可以通过比较经纬度来删除途经点了。
阅读全文