이번엔 구글맵 자체를 클릭했을 때 좌표를 얻는 방법을 구현해보겠습니다.
1. setOnMapClickListener 사용
googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() } }); } | cs |
이렇게 onMapClickListener()를 설정합니다. onMapClickListener의 안에서 여러가지를 구현할 수 있습니다.
@Override public void onMapClick(LatLng point) { ReferSharedPreference preferenceCoordinates = new ReferSharedPreference(getContext()); MarkerOptions marker = new MarkerOptions().position( new LatLng(point.latitude, point.longitude)).title("ok"); preferenceCoordinates.put("Coor", "{ \"longitude\": \""+point.latitude +"\", \"latitude\": \""+point.longitude+"\" } "); preferenceCoordinates.put("Lat", String.valueOf(point.latitude)); preferenceCoordinates.put("Lon", String.valueOf(point.longitude)); | cs |
지도의 좌표를 가져올 수 있습니다.
googleMap.clear(); googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(point, 14)); googleMap.addMarker(marker); | cs |
이걸로 애니메이션을 구현합니다. 카메라 줌도 바꿀 수 있으며 마커도 새로 추가할 수 있습니다.
String lat = preferenceCoordinates.getValue("Lat", "13"); String lon = preferenceCoordinates.getValue("Lon", "15"); mCoordinatesTextMap.setText(lat + " , " + lon); | cs |
이렇게 하여 (13,15)를 기본으로 하는 부분을 구현했습니다. 값이 없을 경우에 지정된 값을 불러옵니다.
지난 시간의 코드와 연결됩니다.
2. 참고 코드
ReferSharedPreference preferenceCoordinates = new ReferSharedPreference(getContext()); LatLng point = new LatLng(googleMap.getMyLocation().getLatitude(), googleMap.getMyLocation().getLongitude()); MarkerOptions marker = new MarkerOptions() .position(point).title("ok"); | cs |
이 부분과의 접점이 있었습니다. 좌표값을 SharedPreference에 저장해 놓거나 새로 저장해서 사용하도록 합니다. 전 ReferSharedPreference라는 새로운 dataType을 만들어서 사용했습니다.
'Java' 카테고리의 다른 글
[android] 경과한 시간에 따른 날짜 표현 방식 (0) | 2018.02.03 |
---|---|
[android] Glide와 intent 사용하기 (0) | 2018.02.03 |
[android] 구글맵 2 (0) | 2018.02.03 |
[android] 구글맵 1 (0) | 2018.02.03 |
[android] Fragment 만들기 2-2 (0) | 2018.02.03 |