Android lon lat在onMapReady时为空

Android lon lat在onMapReady时为空,android,google-maps,Android,Google Maps,当我使用改造从服务器调用lon、lat时,数据在这里 双lon,lat NetworkEngine.getInstance().getResDetail(id, new Callback<Restaurant>() { @Override public void success(Restaurant restaurant, Response response) { lon = restauran

当我使用改造从服务器调用lon、lat时,数据在这里

双lon,lat

NetworkEngine.getInstance().getResDetail(id, new Callback<Restaurant>() {
            @Override
            public void success(Restaurant restaurant, Response response) {

                    lon = restaurant.getLon(); // Double
                    lat = restaurant.getLat(); // Double
                    Log.i("lon_", String.valueOf(restaurant.getLon())); //    lon_: -128.861048
                    Log.i("lat_", String.valueOf(restaurant.getLat())); //    lat_: 51.09783    
            }
您的
onMapReady()
在改型的API调用之前被调用

因此,初始化
mapFragment.getMapAsync(这个)在改装的API调用的
success()
方法中

@在mapready lon上,lat为空。为什么?

@Override
public void onMapReady(GoogleMap googleMap) {

    Log.i("lonn_", String.valueOf(lon)); // null
    Log.i("latt_", String.valueOf(lat)); // null
    map = googleMap;
    LatLng location = new LatLng(lat, lon);

}
因为lon和lat在这里没有值,这意味着它们都是null。我想你是在网络通话前打开地图的。你应该这样做-

NetworkEngine.getInstance().getResDetail(id, new Callback<Restaurant>() {
    @Override
    public void success(Restaurant restaurant, Response response) {

            lon = restaurant.getLon(); // Double
            lat = restaurant.getLat(); // Double
            Log.i("lon_", String.valueOf(restaurant.getLon())); //    lon_: -128.861048
            Log.i("lat_", String.valueOf(restaurant.getLat())); //    lat_: 51.09783    
            openMap();// it's just a method name you can change it with user suitable method name.
    }
}

这只是一个想法,希望能对你有所帮助。

我想你在4月1日之后得到的时间已经足够了called@NikhilSharma I call
SupportMapFragment mapFragment=(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);getMapAsync(这个)联网后重新调用
public void success()
方法。。
private void openMap(){
    // do your stuff here..

   // something like to call another method to open map for you or,
  // write all the code here to open a map like this--
  SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
  mapFragment.getMapAsync(this);

}