Nuke Olaf - Log Store
[Android] 안드로이드 - google map marker 검색 본문
내 구글맵에서 모든 장소를 검색할 수 있게 하는것이 아니라, 내가 지정해놓은 장소들만 검색할 수 있게 하는 것이 좋을 것 같다는 생각이 들었다. 그래서 GeoCoder 로 주소를 가져와서 검색하는 것이 아니라, 내가 미리 하드코딩 해둔 마커들의 이름을 검색할 수 있게 하는 것이 좋을 것 같다는 생각이 들었다.
이 방법이 최선은 아닌것 같다. 더 좋은 방법이 있는지 찾아보고 싶은데 시간 관계상 이렇게 구현했다.
1. marker 들을 미리 추가해놓기
HashMap<String, LatLng> shops = new HashMap<>();
// 구글 맵에 업체에 관련된 markers 추가함
public void addMarkers() {
MarkerOptions markerOptions = new MarkerOptions();
LatLng shop1 = new LatLng(37.566807, 126.992853);
markerOptions
.position(shop1)
.title("태성볼트");
map.addMarker(markerOptions);
shops.put("태성볼트", shop1);
LatLng shop2 = new LatLng(37.566889, 126.993245);
markerOptions
.position(shop2)
.title("대덕금속");
map.addMarker(markerOptions);
shops.put("대덕금속", shop2);
LatLng shop3 = new LatLng(37.571503, 126.993567);
markerOptions
.position(shop3)
.title("영진재료사");
map.addMarker(markerOptions);
shops.put("영진재료사", shop3);
LatLng shop4 = new LatLng(37.570748, 126.993135);
markerOptions
.position(shop4)
.title("삼정사");
map.addMarker(markerOptions);
shops.put("삼정사", shop4);
LatLng shop5 = new LatLng(37.572019, 126.992209);
markerOptions
.position(shop5)
.title("아림주물");
map.addMarker(markerOptions);
shops.put("아림주물", shop5);
LatLng shop6 = new LatLng(37.567230, 126.993630);
markerOptions
.position(shop6)
.title("명진시보리");
map.addMarker(markerOptions);
shops.put("명진시보리", shop6);
}
2. 검색하기 메서드
shops 해쉬맵에서 검색한 key 값의 LatLng 을 가져와서 그 위치로 카메라를 이동시켜준다
// 업체검색 메서드
public void searchShop(String name) {
LatLng latLng = shops.get(name);
map.moveCamera(CameraUpdateFactory.newLatLng(latLng));
map.animateCamera(CameraUpdateFactory.zoomTo(20));
}
3. 검색에 따른 결과 출력
// 구글맵 검색 하는 부분
Button searchButton = findViewById(R.id.shop_button_search);
searchButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 검색창에서 텍스트를 가져온다
String searchText = searchBox.getText().toString();
if (shops.containsKey(searchText)) { // 검색한 업체가 등록되어있는 경우
searchShop(searchText); // 해당 업체를 검색한다
}else { // 검색한 업체가 등록되어 있지 않은 경우
// 다이얼로그를 띄워준다
AlertDialog.Builder builder = new AlertDialog.Builder(ShopActivity.this);
builder.setTitle("알림").setMessage("금속인에 등록되어있지 않은 업체입니다.");
AlertDialog alertDialog = builder.create();
alertDialog.show();
}
}
});
'Android' 카테고리의 다른 글
[Android] 안드로이드 - Fused Location Provider API 란? (0) | 2020.01.16 |
---|---|
[Android] 안드로이드 - Google Map 현재 위치 표시 예제 링크 (0) | 2020.01.16 |
[Android] 안드로이드 - google map 에 검색창 추가하기 (0) | 2020.01.15 |
[Android] 안드로이드 - google map 사용법 (0) | 2020.01.15 |
[Android] 안드로이드 - API 란 무엇인가? (0) | 2020.01.15 |
Comments