-1

Play 서비스에서 getMap()은 가치가 떨어지고 getMapAsync()으로 바뀌 었음을 알고 있습니다.
그러나 사용 방법이 확실하지 않습니다. getMapAsync(). 나는 이와 비슷한 다른 질문을 발견했다. 그러나 내 코드에서 구현할 내용을 잘 모른다. 내 getMapAsync(). 콜백 메소드라고 생각하지만 확실하지 않습니다.
누군가 올바른 코드를 입력하고 내가 뭘 잘못하고 있다고 말할 수 있습니까?getMap() 대신 getMapAsync()를 사용하는 방법

public class FindParty extends AppCompatActivity { 

    static final LatLng Durban = new LatLng(-29.858680, 31.021840); 
    private GoogleMap googleMap; 

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


     try{ 

      if (googleMap == null) { 

       googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMapAsync(); 

      } 

      googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
      googleMap.setTrafficEnabled(true); 
      googleMap.setIndoorEnabled(true); 
      googleMap.setBuildingsEnabled(true); 
      googleMap.getUiSettings().setZoomControlsEnabled(true); 

      final Marker marker_Durban = googleMap.addMarker(new MarkerOptions() 
        .position(Durban) 
        .snippet("Durban, KwaZulu-Natal, South Africa") 
        .title("Durban")); 

      googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 

       @Override 
       public void onInfoWindowClick(Marker marker) { 
        if (marker.getTitle().equals("Durban")) { 
         Intent intent = new Intent(FindParty.this, Party.class); 
         intent.putExtra("message", "Durban"); 
         startActivity(intent); 
        } 
       } 
      }); 

     } catch (Exception e) { 

      e.printStackTrace(); 
     } 

    } 
} 

답변

2

클래스

OnMapReadyCallback

를 구현해야합니다
public class FindParty extends AppCompatActivity implements OnMapReadyCallback { 

    static final LatLng Durban = new LatLng(-29.858680, 31.021840); 
    private GoogleMap googleMap; 
    MapFragment mapFragment; 

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


     try { 

      if (googleMap == null) { 

       mapFragment = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)); 
       mapFragment.getMapAsync(this); 

      } 

     } catch (Exception e) { 

      e.printStackTrace(); 
     } 

    } 

    @Override 
    public void onMapReady(GoogleMap map) { 
     googleMap = map; 
     googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
     googleMap.setTrafficEnabled(true); 
     googleMap.setIndoorEnabled(true); 
     googleMap.setBuildingsEnabled(true); 
     googleMap.getUiSettings().setZoomControlsEnabled(true); 

     final Marker marker_Durban = googleMap.addMarker(new MarkerOptions() 
       .position(Durban) 
       .snippet("Durban, KwaZulu-Natal, South Africa") 
       .title("Durban")); 

     googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 

      @Override 
      public void onInfoWindowClick(Marker marker) { 
       if (marker.getTitle().equals("Durban")) { 
        Intent intent = new Intent(FindParty.this, Party.class); 
        intent.putExtra("message", "Durban"); 
        startActivity(intent); 
       } 
      } 
     }); 

    } 
} 
+0

@MSP 전체 코드를 추가했습니다 ... – rafsanahmad007

+0

고맙습니다. 코드 작동, 응용 프로그램 작동! 고맙다. – MSP

0

자네 말이 맞아, getMapAsync가() 콜백을 기반으로, belowe 예제를 보려면 방법 콜백하는지도 옵션 설정을 이동하십시오 Example

관련 문제