Places API Web Service를 이용하여 현재 위치 주변에 있는 음식점 같은 장소 정보를 획득하여 주변에 위치를 아래 화면처럼 빨간색 마커로 출력해줍니다.
마커 하나를 선택하면 해당 장소의 이름과 주소를 정보 창에 보여주는데 이 정보를 다른 액티비티로 전송하는 것을 구현해보았습니다.
해당 정보 창을 선택하면
정보 박스에 있던 해당 정보를 새로운 액티비티에서 보여줍니다.
프로그래밍은 다음 포스팅의 코드를 기반으로 작성했습니다.
Places API Web Service를 사용하여 Android Google Map에 현재 위치 주변의 음식점 표시하기
http://webnautes.tistory.com/1080
onMapReady 메소드에서 정보 창을 클릭시 인텐트를 이용하여 새로운 액티비티 실행시 정보를 전달하도록 다음처럼 작성합니다.
mGoogleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { |
새로운 액티비티의 코드와 레이아웃을 작성합니다.
NewActivity.java
package com.tistory.webnautes.googlemapsandroidapiexample; |
newactivity.xml
<?xml version="1.0" encoding="utf-8"?> |
MainActivity에서 NewActivity를 인식할 수 있도록 매니페스트 파일을 다음처럼 수정합니다.
<activity android:name=".MainActivity"> |
이제 실행시켜 보면 앞에서 설명한대로 진행이 됩니다.
참고
https://stackoverflow.com/questions/17549372/how-to-get-click-event-of-the-marker-text
'Android > Google Map & 카카오 지도' 카테고리의 다른 글
포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
질문을 남겨주면 가능한 빨리 답변드립니다.
여러분의 응원으로 좋은 컨텐츠가 만들어집니다.
지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다.
감사합니다 ~~
유튜브 구독하기
제가 쓴 책도 한번 검토해보세요 ^^
-
-
구글이나 github 검색을 하지 않는다면...
안드로이드 공식 문서나 라이브러리 문서를 가지고 공부해야 하지 않을까 싶네요..
그리고 질문하신건..
아래 코드에서 title에 따라 다른 액티비티를 보여주면 될 듯합니다.
mGoogleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
Intent intent = new Intent(getBaseContext(), NewActivity.class);
String title = marker.getTitle();
String address = marker.getSnippet();
intent.putExtra("title", title);
intent.putExtra( "address", address);
startActivity(intent);
}
});
-
-
초보 2018.11.26 02:16
안녕하세요.
Places API Web Services에서 글을 남기고 답글을 달아주셔서 참고하려고 온 초보입니다.
덕분에 Intent를 통해 다른 Activity에 정보를 넘기는 방법에 대해서 알았습니다. 감사합니다.
그런데 클릭이 아닌 반경 내에 표시되어 있는 Marker의 정보를 List로 넘기고 싶은데 이러한 Method는 따로 없을 까요?
저 같은 경우는 1Km 반경을 탐색하고 있습니다.
잘 배우고 있습니다. 감사합니다 -
-
ㅂㅂ 2019.11.24 16:45
mGoogleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
Intent intent = new Intent(getBaseContext(), NewActivity.class);
String title = marker.getTitle();
String address = marker.getSnippet();
intent.putExtra("title", title);
intent.putExtra( "address", address);
startActivity(intent);
}
});
부분은 그냥 onMapReady 메소드 안에 넣으면 되는건가요?? -
-
-
-
로라 2019.11.25 13:05
저 예시상으로 다음 화면으로 갈때
이름 : 동아리
주소 : 어디어디
이렇게 앞에다가 목록이름 적어주려면 레이아웃을 어떻게 건드려야하나요? -
김지수 2019.11.26 20:45
클릭된 장소의 지도를 다음 액티비티에서 이름, 주소와 함께 다시 보여주려면 newactivity를 어떻게 변형시켜야 할까요? 주소와 이름처럼 비슷하게 시도해봤는데 잘 되지 않습니다..ㅜ
-
지수 2019.11.27 08:41
네 동아리랑 주소가 나온 저 newactivity 화면상에 해당 장소 마커가 찍힌 지도를 한번 더 보여주고 싶어서요
mainactivity 는 다음과 같이 작성을 했고요
HashMap<String, String> hashMap = new HashMap<String, String>();
hashMap.put("key", "value");
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("map", hashMap);
startActivity(intent);
받는 newactivity는
hashMap = HashMap<String, String>()
intent.getSerializableExtra("map")
Log.v("HashMapTest", hashMap.get("key"))
이렇게 추가를 했습니다
개발자님이 쓰신 https://webnautes.tistory.com/1012intent 글도 참고해 구글링하여 저정도는 썼으나 해결이 안되네요. 에러는 unresolved reference : hashMap
이렇게 나옵니다. 다른 메소드같은걸 추가해야하는걸까요. 좋은 생각 부탁드립니다 -
다음처럼 해보세요..
1. 전달하는 액티비티
HashMap<String, String> hashMap = new HashMap<String, String>();
hashMap.put("id", "webnautes");
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("hashMap", hashMap);
startActivity(intent);
2. 받는 액티비티
Intent intent = getIntent();
HashMap<String, String> hashMap = (HashMap<String, String>) intent.getSerializableExtra("hashMap");
String str = hashMap.get("id");
-