2017-04-17 3 views
0

저는 Android 프로그래밍에 익숙하며 잠시 동안이 문제로 어려움을 겪고 있습니다. 나는 getMap()이 더 이상 사용되지 않고 getMapAsync()로 바뀌 었음을 읽었습니다 그러나 조각 리소스를 사용하기 때문에 getMayAsync()를 사용하는 방법을 찾지 못했고 지금까지지도에 조각 리소스가 필요하지 않았습니다. . 어떤 도움이 많이 주시면 감사하겠습니다getMap()을 해결할 수 없거나 getMapAsync()로 바꿀 수 없습니다.

public class RunMapFragment extends SupportMapFragment { 
    private static final String ARG_RUN_ID = "RUN_ID"; 
    private GoogleMap mGoogleMap; 
    public static RunMapFragment newInstance(long runId) { 
     Bundle args = new Bundle(); 
     args.putLong(ARG_RUN_ID, runId); 
     RunMapFragment rf = new RunMapFragment(); 
     rf.setArguments(args); 
     return rf; 
    } 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, 
          Bundle savedInstanceState) { 
     View v = super.onCreateView(inflater, parent, savedInstanceState); 
     mGoogleMap = getMap(); //Error here 
     mGoogleMap.setMyLocationEnabled(true); 
     return v; 
    } 
} 

:

여기 내 코드입니다. getMap()을 사용할 수있는 map API 최소 sdk를 verison 9로 롤백 할 수 있습니까?

답변

1

getMap() 방법 was deprecated and then removed이므로 getMapAsync()을 대신 사용해야합니다.

조각이 SupportMapFragment를 직접 확장 할 때 onCreateView()을 재정의 할 필요가 없습니다.

대신에, 단지 onResume() 재정에서 getMapAsync()를 호출하고 onMapReady() 재정에 반환되는 구글지도 참조를 사용

public class RunMapFragment extends SupportMapFragment { 
    private static final String ARG_RUN_ID = "RUN_ID"; 
    private GoogleMap mGoogleMap; 
    public static RunMapFragment newInstance(long runId) { 
     Bundle args = new Bundle(); 
     args.putLong(ARG_RUN_ID, runId); 
     RunMapFragment rf = new RunMapFragment(); 
     rf.setArguments(args); 
     return rf; 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     if (mGoogleMap == null) { 
      getMapAsync(this); 
     } 
    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mGoogleMap = googleMap; 
     mGoogleMap.setMyLocationEnabled(true); 
    } 
} 

당신은 API 23 이상을 대상으로하는 경우, 당신은거야 그 setMyLocationEnabled() 메서드를 사용하기 전에 사용자가 런타임에 위치 권한을 승인했는지 확인해야합니다. 자세한 내용은 my answer here을 참조하십시오.

+0

대단히 감사합니다! –