2017-04-18 47 views
1

我需要在活動中兩個不同的位置顯示兩個MapFragments。 在我的XML文件,我已經叫了兩個MapFragments 「地圖」 和 「map_two」,並在Java中我在的onCreate代碼:如何獲得兩個MapFragments在同一個活動 - 谷歌地圖阿比

com.google.android.gms.maps.MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(map); 
     mapCount = 1; 
     mapFragment.getMapAsync(this); 
     com.google.android.gms.maps.MapFragment mapFragmentTwo = (MapFragment) getFragmentManager().findFragmentById(map_two); 
     mapCount = 2; 
     mapFragmentTwo.getMapAsync(this); 

然後我重寫onMapReady:

@Override 
public void onMapReady(GoogleMap googleMap) { 
    if (mapCount == 1){ 
    mMap = googleMap; 
    LatLng vannes = new LatLng(47.66, -2.75); 
    mMap.addMarker(new MarkerOptions().position(vannes).title("Vannes")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(vannes)); 

    } else if (mapCount == 2){ 
     mMap = googleMap; 
     LatLng bordeaux = new LatLng(44.833328, -0.56667); 
     mMap.addMarker(new MarkerOptions().position(bordeaux).title("Bordeaux")); 
     mMap.moveCamera(CameraUpdateFactory.newLatLng(bordeaux)); 

    } 
} 

我的問題是,兩張地圖顯示的是同一個地點,而我想顯示兩個不同的地點。你看到如何做到這一點?

謝謝

亞歷

回答

3

要做到這一點,最好的辦法是創建2點不同的回調,每個地圖:

public OnMapReadyCallback onMapReadyCallback1(){ 
     return new OnMapReadyCallback() { 
      @Override 
      public void onMapReady(GoogleMap googleMap) { 
       mMap = googleMap; 
       LatLng vannes = new LatLng(47.66, -2.75); 
       mMap.addMarker(new MarkerOptions().position(vannes).title("Vannes")); 
       mMap.moveCamera(CameraUpdateFactory.newLatLng(vannes)); 
      } 
     }; 
    } 

    public OnMapReadyCallback onMapReadyCallback2(){ 
     return new OnMapReadyCallback() { 
      @Override 
      public void onMapReady(GoogleMap googleMap) { 
       mMap = googleMap; 
       LatLng bordeaux = new LatLng(44.833328, -0.56667); 
       mMap.addMarker(new MarkerOptions().position(bordeaux).title("Bordeaux")); 
       mMap.moveCamera(CameraUpdateFactory.newLatLng(bordeaux)); 

      } 
     }; 
    } 

後在Activity添加這2種方法,你有設置他們在您的地圖:

com.google.android.gms.maps.MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(map); 
     mapCount = 1; 
     mapFragment.getMapAsync(onMapReadyCallback1()); 
     com.google.android.gms.maps.MapFragment mapFragmentTwo = (MapFragment) getFragmentManager().findFragmentById(map_two); 
     mapCount = 2; 
     mapFragmentTwo.getMapAsync(onMapReadyCallback2());