usar una the that studio para necesitas name google generar example ensure enabled ejemplo data clon clave api_key android google-maps google-maps-android-api-2

android - una - Reemplace getMap con getMapAsync



meta data android name com google android maps v2 api_key (3)

Quiero reemplazar el método obsoleto getMap con getMapAsync , pero no getMapAsync , pero sí GoogleMap :

private GoogleMap googleMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map); try { if(googleMap == null) { googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); } googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); googleMap.setMyLocationEnabled(true); googleMap.setTrafficEnabled(true); googleMap.setIndoorEnabled(true); googleMap.setBuildingsEnabled(true); googleMap.getUiSettings().setZoomControlsEnabled(true);

Si reemplazo el googleMap con MapFragment esta manera, ya no puedo setMapType etc. Entonces, ¿cómo puedo cambiar a getMapAsync en mi caso?

MapFragment mapFragment = (MapFragment) getFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this);


Muy simple, simplemente OnMapReadyCallback que su Actividad implemente la interfaz OnMapReadyCallback , y luego asigne su referencia de googleMap en la devolución de llamada onMapReady() .

Luego, realice cualquier acción en googleMap que desee.

Aquí hay un ejemplo simple:

public class MainActivity extends Activity implements OnMapReadyCallback { private GoogleMap googleMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MapFragment mapFragment = (MapFragment) getFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); } @Override public void onMapReady(GoogleMap map) { googleMap = map; setUpMap(); } public void setUpMap(){ googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); googleMap.setMyLocationEnabled(true); googleMap.setTrafficEnabled(true); googleMap.setIndoorEnabled(true); googleMap.setBuildingsEnabled(true); googleMap.getUiSettings().setZoomControlsEnabled(true); } }


Si usa MapFragment, puede usar el método stMapType. Implemente OnMapReadyCallback en su actividad. Cree MapFragment y llame al método getAsyncMap en ese objeto. Te pedirá que implementes el método MapReady (mapa GoogleMap) allí puedes establecer el tipo de mapa, etc. Espero eso ayude.


como en el documento oficial, obtener el mapa asíncrono requiere una devolución de llamada; ¡está ahí su "punto de entrada principal" para cosas de google maps!

public class MapPane extends Activity implements OnMapReadyCallback { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.map_activity); MapFragment mapFragment = (MapFragment) getFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); } @Override public void onMapReady(GoogleMap map) { // DO WHATEVER YOU WANT WITH GOOGLEMAP map.setMapType(GoogleMap.MAP_TYPE_HYBRID); map.setMyLocationEnabled(true); map.setTrafficEnabled(true); map.setIndoorEnabled(true); map.setBuildingsEnabled(true); map.getUiSettings().setZoomControlsEnabled(true); } }