Como sei que o mapa está pronto para ser usado ao usar o SupportMapFragment?
NoonCreate
método, estou fazendo uso doSupportMapFragment
para mostrar um mapa.
SupportMapFragment fragment = new SupportMapFragment();
getSupportFragmentManager().beginTransaction()
.add(android.R.id.content, fragment).commit();
Em conjunto com isso, gostaria de adicionar um marcador. O problema é quando a chamada paragetMap
é nulo, quando posso tentar novamente? Existe algum evento para o qual eu possa me inscrever ou a minha abordagem é errada?
mMap = ((SupportMapFragment)(getSupportFragmentManager().findFragmentById(R.id.map))).getMap();
if(mMap == null)
//what do I do here?
Na verdade, o mapa está sendo exibido no telefone, mas parece que não estou tendo sorte em obter a referência para adicionar marcadores.
ATUALIZAR:
A razão pela qual eu estava criando oSupportMapFragment
através do construtor é porque o típicosetContentView
estava batendo e não funcionou. Isso me colocou na situação em que eu não conseguia obter minha referência noonCreate
método desde que eu estava de fato criando oSupportMapFragment
naquela hora. Em uma investigação mais aprofundada, parece que meusetContentView
A questão era um subproduto de não ter tanto o jar do Google-play-services como o module / src configurado como parte do projeto geral. Ao fazer ambos,setContentView
agora funciona e eu posso obter a referência viagetMap()
como eu esperaria.
lots.xml ...
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
LotsActivity.java ...
public class LotsActivity extends FragmentActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lots);
GoogleMap mMap;
mMap = ((SupportMapFragment)(getSupportFragmentManager().findFragmentById(R.id.map))).getMap();
if(mMap == null)
//this should not occur now
}