2014-09-26 2 views
1

자습서를 통해 작업 중이며 내 앱은 기본적으로 하나의 세부 정보 만 제외하고 작동합니다. 지도를 위성보기로 표시하고 특정 장소로 ​​확대하는 등의 작업을 시연하는 옵션 메뉴가 있습니다.Android 용 Google지도 setMyLocationEnabled (true)

이 자습서에는 확대/축소를 위해 표시된 순서대로 효과적으로 사용해야하는 아래의 두 가지 메뉴 옵션이 있습니다 내가 현재있는 곳으로가는지도. 두 번째 메뉴 항목 (동일한 현재 기능 표시)에 동일한 기능을 추가하여 첫 번째 항목을 중복 (getcurrentlocation)하고 싶었지만 이로 인해 응용 프로그램이 중단되었습니다.

아무에게도 왜 아이디어를 어떻게 극복 할 수 있습니까? 감사합니다. 당신의 GoogleMap 부하가 null이됩니다 Location 이물이 약간의 시간이 소요 때 처음

코드는 처음

case R.id.menu_getcurrentlocation: 
     // ---get your current location and display a blue dot--- 
     map.setMyLocationEnabled(true); 

     break; 

    case R.id.menu_showcurrentlocation: 
      // Adding the next line breaks the app. 
      // map.setMyLocationEnabled(true); 
     Location myLocation = map.getMyLocation(); 
     LatLng myLatLng = new LatLng(myLocation.getLatitude(),myLocation.getLongitude()); 


     CameraPosition myPosition = new CameraPosition.Builder().target(myLatLng).zoom(17).bearing(90).tilt(30).build(); 
     map.animateCamera(CameraUpdateFactory.newCameraPosition(myPosition)); 

     break; 
+1

귀하의 logcat을 보여주십시오. – Piyush

+0

그래, 내 LogCat을 내 게시물에 추가하는 데 어려움을 겪었으나 작동하는 해결 방법이 있지만 내 Q를 해결하지 못하는 이유는 무엇입니까? map.setMyLocationEnabled (true); 메뉴 옵션 내에서 작동하지 않습니다. 제 해결 방법은 map.setMyLocationEnabled (true); getSupportFragmentManager에 대한 호출을 한 직후입니다. –

+0

메뉴 클릭 이벤트가 작동하지 않는다는 의미입니까? null 포인터 예외가 발생합니까? – Piyush

답변

3

을 따른다.

두 메뉴 옵션 모두 이렇게 확인하십시오.

개발자 doc로부터
if(map!=null){ 
map.setMyLocationEnabled(true); 
} 


if(map!=null){ 
    Location myLocation = map.getMyLocation(); 

    if(myLocation !=null){ 
    LatLng myLatLng = new LatLng(myLocation.getLatitude(), 
      myLocation.getLongitude()); 


    CameraPosition myPosition = new CameraPosition.Builder() 
      .target(myLatLng).zoom(17).bearing(90).tilt(30).build(); 
    map.animateCamera(CameraUpdateFactory.newCameraPosition(myPosition)); 
    } 
} 
1

,

GoogleMap으로 만하여 getMap를 이용하여 취득 할 수있다() 기본 지도 시스템로드되고 프래그먼트의 하부 뷰가 존재하는 경우. 이 클래스는지도 시스템과보기를 자동으로 초기화합니다. 은 Google Play 서비스 APK의 가용성에 따라 달라 지므로 준비가되면 보장 할 수 없습니다. GoogleMap을 사용할 수없는 경우 getMap()은 null을 반환합니다.

  • 조각의 수명주기는 아직 onCreateView (LayoutInflater에서, 뷰 그룹, 번들)를 통과하지 않은 경우가 발생할 수 있습니다.
  • Google Play 서비스를 사용할 수없는 경우에도 발생할 수 있습니다. 구글이 서비스를 재생하는 경우 지적 또한

,

나중에 사용할 수있게하고, 조각 다시 초기화하고 반환됩니다이 메서드를 호출 onCreateView (LayoutInflater에서, 뷰 그룹, 번들), 겪었 구글지도.

지도가있는 곳과 정확히 어떤 방법으로 전화했는지 알 수 없으므로 getmap()이 null을 반환한다고 가정합니다. 즉지도가 준비되지 않았 음을 의미합니다. 조각이 준비되지 않았거나 사용 가능한 Google Play 서비스가없는 기기에서 실행 중이기 때문입니다.

자세한 내용은 getMap을 참조하십시오.

관련 문제