如下我在高德地图中添加了3个marker,每个marker在添加数据bean,但是在marker的点击事件时,发现有的marker数据返回空指针,但有的能获取。
如下是代码,不知道哪有问题啊??
/** * 在地图上添加Marker */ private List<BikeInfo> infos = new ArrayList<>(); //private ArrayList<MarkerOptions> markerOptionses = new ArrayList<>(); private void addMarkersToMap(double _latitude,double _longitude){ infos.clear(); // markerOptionses.clear(); aMap.clear(true); infos.add(new BikeInfo(1,_latitude - new Random().nextInt(300) * 0.0008,_longitude - new Random().nextInt(300) * 0.0008,"500米")); infos.add(new BikeInfo(2,_latitude - new Random().nextInt(200) * 0.0008,_longitude - new Random().nextInt(200) * 0.0008,"200米")); infos.add(new BikeInfo(1,_latitude + new Random().nextInt(200) * 0.0008,_longitude + new Random().nextInt(100) * 0.0008,"800米")); for(BikeInfo info : infos){ LatLng latLng = new LatLng(info.getLatitude(),info.getLongitude()); // Bundle bundle = new Bundle(); // bundle.putSerializable("info",info); MarkerOptions options = new MarkerOptions() .position(latLng) .title(info.getDistance()) .icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_ofotb)) .draggable(true); Marker marker = aMap.addMarker(options); marker.setObject(info);//传入数据bean markersTwo.add(marker); } //markersTwo = aMap.addMarkers(markerOptionses,true); }
//Marker的点击事件 aMap.setOnMarkerClickListener(new AMap.OnMarkerClickListener() { @Override public boolean onMarkerClick(Marker marker) { try{ BikeInfo info = (BikeInfo) marker.getObject(); Log.d("jiejie","ddddd" + info.getCode() + " " + info.getDistance()); }catch (Exception e){ Log.d("jiejie","dd" + e); } return true;//false 点击marker会移动到地图中心,true则不会 } });
没有问题,是点击其他的Marker导致的空指针。