2015-12-17 28 views
0

OnMapReady在执行ReadCsvFile()之前被调用,它从CSV文件中获取latlng点。因此,当显示map时,它不会显示当前位置。我如何确保onMapReday仅在从文件中提取latLng点后才会调用?如何防止在 “googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng,17));”获取空指针异常GoogleMap在使用onMapReady时不显示当前位置

public void onMapReady(final GoogleMap googleMap) { 
    ReadCsvFile(this); 
    for (LocationHelperBean locationHelperBean : parameterList) { 
     latLng=new LatLng(Double.parseDouble(String.valueOf(locationHelperBean.getLatitude())), Double.parseDouble(String.valueOf(locationHelperBean.getLongitude()))); 
      arrayPoints.add(latLng); 
    } 
    googleMap.setMyLocationEnabled(true); 

    googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 17)); 

    googleMap.addMarker(new MarkerOptions().snippet("latitude:" + latitude + "longitude:" + longitude + "bearing:" + bearing + "accuracy:" + accuracy + "altitude" + altitude + "speed" + speed).position(latLng).draggable(true)); 

    PolylineOptions polylineOptions = new PolylineOptions().add(latLng).width(6).color(Color.RED).geodesic(true); 

    polylineOptions.addAll(arrayPoints); 

    map.addPolyline(polylineOptions); 
} 
+0

问题是什么? – cakan

+0

ReadCsvFile从文件中获取latLng点。但是,由于onMapReady在ReadCsvFile之前执行,因此在显示map时latLng为null。如何防止这种情况发生?我怎么才能确保onMapReady只有在latLng有值后才被调用? –

回答

0

如果您使用的MapView你可以只调用onCreate(null)你已经获得的一切之后,从readCsvFile()建立地图。否则,刚刚拿到的GoogleMap当它准备和调用setupMap()readCsvFile()完成,像这样:

private GoogleMap map; 

@Override 
public void onMapReady(GoogleMap map) { 
    this.map = map; 
    setupMap(); 
} 

private void setupMap() { 
    if (map != null && latLng != null) { 
     // Do something with map (e.g. add markers,...) 
    } 
} 
相关问题