Nuke Olaf - Log Store

[Android] 안드로이드 - google map 에 검색창 추가하기 본문

Android

[Android] 안드로이드 - google map 에 검색창 추가하기

NukeOlaf 2020. 1. 15. 19:22

내 앱의 구글 맵이 보이는 부분에서 장소를 검색할 수 있는 검색 창을 띄우고 싶다.

구글 맵에서 제공하는 AutoCompleteFragment 를 사용하거나, 직접 EditText 를 이용해서 검색창을 만들 수 있다고 한다. 

AutoCompleteFragment 는 지도에서 검색할때 자동완성을 도와주는 기능을 하는 fragment  인것 같다. 그런데 찾아보니, AutoCompleteFragment 는 deprecated 되었다고 한다. 왜 deprecated 되었는지는 아직 찾아보지 못했음. 

아무튼 그래서 SupportAutocompleteFragment 를 사용하면 된다고 함

https://developers.google.com/places/android-sdk/autocomplete

 

아무튼 나는 Edit Text 로 검색하는 방법을 사용하기로 했다. 

코드 분석을 아직 제대로 못해서 제대로 이해하고 사용한것 같지는 않다.

// 구글맵에서 검색창 editText 와 검색된 위치 불러올 textView 초기화
        searchBox = findViewById(R.id.shop_editText_search);
        locationText = findViewById(R.id.shop_text_location);

        // 구글맵 검색 하는 부분
        Button searchButton = findViewById(R.id.shop_button_search);
        searchButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // 검색창에서 텍스트를 가져온다
                String searchText = searchBox.getText().toString();

                Geocoder geocoder = new Geocoder(getBaseContext());
                List<Address> addresses = null;

                try {
                    addresses = geocoder.getFromLocationName(searchText, 3);
                    if (addresses != null && !addresses.equals(" ")) {
                        search(addresses);
                    }
                } catch(Exception e) {

                }

            }
        });

 

// 구글맵 주소 검색 메서드
    protected void search(List<Address> addresses) {
        Address address = addresses.get(0);
        LatLng latLng = new LatLng(address.getLatitude(), address.getLongitude());

        String addressText = String.format(
                "%s, %s",
                address.getMaxAddressLineIndex() > 0 ? address
                        .getAddressLine(0) : " ", address.getFeatureName());

        locationText.setVisibility(View.VISIBLE);
        locationText.setText("Latitude" + address.getLatitude() + "Longitude" + address.getLongitude() + "\n" + addressText);

        MarkerOptions markerOptions = new MarkerOptions();
        markerOptions.position(latLng);
        markerOptions.title(addressText);

        map.clear();
        map.addMarker(markerOptions);
        map.moveCamera(CameraUpdateFactory.newLatLng(latLng));
        map.animateCamera(CameraUpdateFactory.zoomTo(15));
    }

 

 

 

참고 링크 >>

https://stackoverflow.com/questions/45107806/autocomplete-search-bar-in-google-maps

https://stackoverflow.com/questions/31136527/add-search-toolbar-over-google-map-like-in-native-android-app

https://www.viralandroid.com/2016/04/google-maps-android-api-adding-search-bar-part-3.html

Comments