안드로이드 버튼 클릭 시 gps를 받아와 마커 찍기

조회수 471회

제가 지금 버튼을 클릭했을 시 휴대폰 위치를 받아 구글맵에 제가 이동한 이동경로를 보여주는 앱을 구현중입니다. 다른 블로그를 참고하여 버튼 클릭 시 구글맵에 마커와 폴리라인을 긋는건 구현을 했습니다.

그런데 이걸 멈추려니 어떻게 해야할지 모르겠네요... 아래는 버튼 클릭 시의 구현입니다. 버튼은 한 개이고 처음엔 '걸음 시작'이라 돼있는 버튼을 누르면 '걸음 정지'로 바뀌고 이 버튼 하나로 두 기능을 모두 넣으려 합니다.

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                walkState++;
                if(walkState % 2 == 0) {
                    Toast.makeText(getApplicationContext(), "걸음을 시작합니다.", Toast.LENGTH_SHORT).show();
                    button.setText("걸음 정지");

                    LocationCallback locationCallback = new LocationCallback() {
                        @Override
                        public void onLocationResult(LocationResult locationResult) {
                            super.onLocationResult(locationResult);

                            List<Location> locationList = locationResult.getLocations();

                            if (locationList.size() > 0) {
                                location = locationList.get(locationList.size() - 1);

                                currentPosition = new LatLng(location.getLatitude(), location.getLongitude());

                                String markerTitle = getCurrentAddress(currentPosition);
                                String markerSnippet = "위도:" + String.valueOf(location.getLatitude()) + " 경도:" + String.valueOf(location.getLongitude());

                                setCurrentLocation(location, markerTitle, markerSnippet);

                                mCurrentLocatiion = location;
                            }
                        }
                    };

                    mFusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, Looper.myLooper());
                } else {
                    Toast.makeText(getApplicationContext(), "걸음을 멈춥니다.", Toast.LENGTH_SHORT).show();
                    button.setText("걸음 시작");


                }
            }
        }); 

마커와 폴리라인을 찍을 때 LocationCallback을 썼는데 멈추려면 어떻게 해야할까요? 심지어 onPause()도 안 먹히네요;;

++ 폴리라인을 지도에서 지우는 방법은 무엇인가요? PolylineOptions를 사용했는데 clear, remove도 없고 setMap(null)도 없네요. PolylineOptions를 ArrayList에 담아서 사용하는데 ArrayList를 clear()해도 안 지워져요 ㅠ

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)