0

我的地圖是按照它的設想開始的,但標記,地圖類型和縮放的設置從未應用於我的SupportMapFragment。當我在另一個項目中啓動相同的代碼時,在MainActivity中,一切正常。我如何使它在SupportMapFragment中工作?GoogleMap設置(addMarker,setMapType和CameraUpdate)在SupportMapFragment中不起作用

MainActivity(工作):

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 

import com.google.android.gms.maps.CameraUpdate; 
import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 

public class MainActivity extends Activity { 
    private final LatLng BUTIKPLATS = new LatLng(57.873873, 11.974995); 

    private GoogleMap karta; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     karta = ((MapFragment) getFragmentManager().findFragmentById(R.id.karta)).getMap(); 

     karta.addMarker(new MarkerOptions().position(BUTIKPLATS).title("Vita Fläckens Blommor")); 
     karta.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
     CameraUpdate update = CameraUpdateFactory.newLatLngZoom(BUTIKPLATS, 17); 
     karta.animateCamera(update); 
    } 


} 

SupportMapFragment(不工作):

import android.os.Bundle; 
import android.view.View; 

import com.google.android.gms.maps.CameraUpdate; 
import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 

public class Karta extends SupportMapFragment{ 



    public static Karta newInstance() { 
     Karta f = new Karta(); 
     return f; 
    } 


private GoogleMap karta; 
private final LatLng BUTIKPLATS = new LatLng(57.873873, 11.974995); 

public void onCreate(View v, Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
System.out.println("onViewCreated1"); 

     karta = ((SupportMapFragment)getFragmentManager().findFragmentById(R.id.kontaktVisaFragment)).getMap(); 
System.out.println("Karta initierad (.getMap)");   
     if (karta !=null){ 
System.out.println("Karta != null");    
      karta.addMarker(new MarkerOptions().position(BUTIKPLATS).title("Vita Fläckens Blommor")); 
      karta.setMapType(GoogleMap.MAP_TYPE_HYBRID); 

      CameraUpdate update = CameraUpdateFactory.newLatLngZoom(BUTIKPLATS, 17); 
      karta.animateCamera(update); 
     } 
    } 
} 

回答

2

SupportMapFragmentonCreate()爲時過早試圖操縱GoogleMap,因爲它還不存在。您需要稍後再等待,當存在GoogleMap對象時,或者將代碼保留在您的活動中。

onViewCreated() from your previous question應該是比onCreate()更好的選擇。但是,我的回答讓事情變得太複雜了。再次

karta=getMap(); 
+0

感謝:更換:

karta = ((SupportMapFragment)getFragmentManager().findFragmentById(R.id.kontaktVisaFragment)).getMap(); 

用!你是天使!它既可以使用也可以不使用((SupportMapFragment)getFragmentManager()。findFragmentById(R.id.kontaktVisaFragment))。我試圖改變它onViewCreated之前,但它墜毀然後。那一次我肯定做錯了事。 – Sluggo

相關問題