2016-03-23 4 views
0

я имею эту проблему с MapView внутри моего макета:MapView показать укомплектовать после экран включается снова

раз добавил он показывает кнопки, логотип Google, сетки, но нет карты. Чтобы сделать его видимым, я должен выключить экран и затем включить его. В чем проблема?

Вот мой код

mapView = (MapView) geo.findViewById(R.id.map_view); 
    mapView.onCreate(savedInstanceState); 
    mapView.getMapAsync(this); 
    final LocationManager lm = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE); 
    lastKnownLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
    if(lastKnownLocation == null) { 
     askLocationRefreshInitMapView(lm); 
    } else { 
     if((System.currentTimeMillis() - lastKnownLocation.getTime()) > THIRTY_MINUTES) { 
      askLocationRefreshInitMapView(lm); 
     } else { 
      initMapView(lastKnownLocation); 
     } 
    } 



private void initMapView(final Location location) { 
    lastKnownLocation = location; 
    // Gets to GoogleMap from the MapView and does initialization stuff 
    mapView.getMapAsync(new OnMapReadyCallback() { 

     @Override 
     public void onMapReady(GoogleMap map) { 
      map.getUiSettings().setMyLocationButtonEnabled(false); 
      map.setMyLocationEnabled(true); 

      // Needs to call MapsInitializer before doing any CameraUpdateFactory calls 
      try { 
       MapsInitializer.initialize(getActivity()); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

      // Updates the location and zoom of the MapView 
      if(location != null) { 
       CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 10); 
       map.moveCamera(cameraUpdate); 
       map.animateCamera(cameraUpdate); 
      } 
      map.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker")); 
     } 
    }); 
} 

ответ

1

Я решил инициализировать карту во время onCreateView, а затем добавив его в запросы UserInteraction

0

Реализовать «OnMapReadyCallback» к вашей деятельности или что когда-либо вы используете то в вашем onMapready методе

@Override 
    public void onMapReady(GoogleMap googleMap) { 
     MapsInitializer.initialize(context); 
     gMap=googleMap; 
    if (mapView != null) { 
       // Initialise the MapView 
       mapView.onCreate(null); 
       // Set the map ready callback to receive the GoogleMap object 
       mapView.getMapAsync(this); 
      } 
    }  
+0

Я сделал это, но положил onMapReady на свой фрагмент и реализовал его, как было предложено, ничего не показывать. По крайней мере, до того, как она показала сетку. Поэтому я попытался поместить mapView.onResume(); как последний метод onMapReady, и теперь отображает карту ... но это очень странно, и я не могу понять, почему ... – tassadar

+0

Я попытался вставить карту внутри макета фрагмента xml, а не раздувать его динамически, и он работает. Поэтому проблема связана с раздуванием нового макета во время выполнения и приложением его к макете фрагмента. Кто-то может помочь мне разобраться в динамически раздутой апробации? – tassadar

+0

@tassadar SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager(). FindFragmentById (R.id.where_are_they_map); mapFragment.getMapAsync (this); –