Android lon lat在onMapReady时为空
当我使用改造从服务器调用lon、lat时,数据在这里 双lon,latAndroid 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
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 callSupportMapFragment 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);
}