2013-05-05 3 views
1

나는 MapFragment가를 감싸는 단편이이 응용 프로그램의 구걸에 생성 한 새로운 구글지도 API를 v2를Google지도 API v2의 여러지도 조각 문제는

와 함께 몇 가지 문제를 실험했다.

사용자가 버튼을 클릭 할 때 생성되는 다른 부분으로,이 내용은 다른 mapFragment입니다.

하지만이지도는 첫 번째 조각에 표시되는 첫 번째지도를 보여줍니다. 또한 얼어 붙어서 행동을 취할 수 없습니다 ...

일부 사용자는 멀티 맵을 표시하는 데 어려움이 있음을 읽었습니다. 어떻게하면이 문제를 해결할 수 있을까요?

mMapFragment = (SupportMapFragment) this.getActivity().getSupportFragmentManager() 
      .findFragmentByTag(MAP_FRAGMENT_TAG); 

    // We only create a fragment if it doesn't already exist. 
    if (mMapFragment == null) { 
     // To programmatically add the map, we first create a 
     // SupportMapFragment. 
     mMapFragment = SupportMapFragment.newInstance(); 
     mMapFragment.setRetainInstance(false); 
     // Then we add it using a FragmentTransaction. 
     FragmentTransaction fragmentTransaction = this.getActivity().getSupportFragmentManager() 
       .beginTransaction(); 
     fragmentTransaction.add(R.id.ly_map, mMapFragment,MAP_FRAGMENT_TAG); 
     fragmentTransaction.commit(); 
    } else { 
     dbug.log("Restoring map"); 
     mMapFragment.setRetainInstance(false); 
     mMap = mMapFragment.getMap(); 
    } 

    // We can't be guaranteed that the map is available because Google Play 
    // services might 
    // not be available. 
    setUpMapIfNeeded(); 

답변

3

아무도 대답을 나는 마침내 내 자신에가 성공 있도록 :

이 내가지도를 만드는 방법이다.

다른 사람들도 같은 문제로 공유 할 것입니다. 여러 파편이 있고 둘 이상의지도 (Google지도) 솔기가 이전에 저장된 동일한 인스턴스를 가져 오도록 시도 할 경우 버그가 있음을 알 수 있습니다. SupportMapFragment.newInstance()를 사용하는 경우에도 SupportMapFragment.newInstance()를 사용한다고해도

어쨌든, 새로운지도를 열기 전에 항상지도를 닫아야합니다. 따라서 두 번째지도를 표시하려면 먼저 이전지도로 조각을 제거하십시오. 그리고 새로운 것을 인스턴스화하고 해당 레이아웃에 추가하십시오.

지도를 열거 나 닫을 때마다 좋은 해결책이 아니지만 찾을 수있는 최상의 방법입니다.

+0

새로운 중첩 된 조각을 사용해보고 싶습니다. 아마도이 조각으로 작업 할 수 있기 때문입니다. – Marcel