naverMap 을 전역 변수로 활용하기

반응형

네이버 맵을 사용하려고 보면

아래와 같이 public void onCreate(Bundle savedInstanceState) 영역 바깥쪽에 아래 코드를 넣어야 하고,

onMapReady 안에서만 naverMap 을 사용할 수 있었다.

이것은 액티비티가 열릴때 자동 실행되는 부분으로 모든 효과나 설정을 onMapReady 안에서만 처리가 가능했다.

사용자가 값을 변경해서 요청할 경우에는 사용하지 못하게... ㅜ.ㅜ

 

    @UiThread

    @Override

    public void onMapReady(@NonNull NaverMap naverMap) {

          naverMap.setMapType(NaverMap.MapType.Basic); // 지도 타입

          naverMap.setLayerGroupEnabled(NaverMap.LAYER_GROUP_TRANSIT, true); // 오버레이되는 정보 (대중교통 - 버스, 지하철)

        // 지정된 좌표로 카메라 이동

        CameraUpdate cameraUpdate = CameraUpdate.scrollTo(new LatLng(37.4685195, 126.8844555))

                                    .animate(CameraAnimation.Easing, 2000);

          naverMap.moveCamera(cameraUpdate);

    }

 

그래나 해결책을 찾았다. naverMap 을 전역 변수화 하면 다른곳에서도 사용이 가능하다.^^

 

public class MapActivity extends FragmentActivity implements OnMapReadyCallback {

    // 네이버맵 전역 변수
    private NaverMap NMap;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

 

          ... (생략) ...

          CameraUpdate cameraUpdate = CameraUpdate.scrollTo(new LatLng(37.5670135, 126.9783740))

                                                                              .animate(CameraAnimation.Easing, 2000);
          NMap.moveCamera(cameraUpdate); // 설정한 좌표로 카메라 이동 // onMapReady 밖에서도 사용 가능 ^^

          ... (생략) ...

    }

 

 

    // 네이버맵 초기 설정
    @UiThread
    @Override
    public void onMapReady(@NonNull NaverMap naverMap) {

        NMap = naverMap;

          NMap.setMapType(NaverMap.MapType.Basic); // 지도 타입
          NMap.setLayerGroupEnabled(NaverMap.LAYER_GROUP_TRANSIT, true); // 오버레이되는 정보 (대중교통 - 버스, 지하철)

    }

 

[참고] https://nittaku.tistory.com/69

            https://developers.google.com/maps/documentation/android-sdk/infowindows?hl=ko

반응형

댓글()