google maps for Android의 infoWindow 맞춤설정

0. 실행 예





1.setInfoWindowAdapter()



GoogleMap.setInfoWindowAdapter()에서 InfoWindowAdapter 인터페이스를 구현한 객체를 설정한다(getInfoWindow() 또는 getContents()를 구현한다).
public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback {
    private GoogleMap mMap;
//〜略〜
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
        mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
            @Override
            public View getInfoWindow(Marker marker) {
                return null;    //どちらかに処理を記述
            }

            @Override
            public View getInfoContents(Marker marker) {
                return null;    //どちらかに処理を記述
            }

2.InfoWindow 레이아웃 작성



res/layout/에 새롭게 레이아웃 리소스 파일을 작성해, infoWindow의 레이아웃을 기술한다.
res/values/strings.xml도 필요에 따라 설명을 추가합니다.

info_window_ayout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/tv_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/iw_1"/>
    <TextView
        android:id="@+id/tv_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/iw_2"/>
    <TextView
        android:id="@+id/tv_3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/iw_3"/>
    <Button
        android:id="@+id/bt_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_1"/>

</LinearLayout>

strings.xml
<resources>
<!-- 〜略〜 -->
    <string name="iw_1">1行目の情報</string>
    <string name="iw_2">2行目の情報</string>
    <string name="iw_3">3行目の情報</string>
    <string name="bt_1">ボタンも置ける</string>
</resources>


3.getInfoContents() 구현


            @Override
            public View getInfoContents(Marker marker) {
                View view = getLayoutInflater().inflate(R.layout.info_window_layout,null);
                return view;
            }

참고



인포 윈도우 사용자 정의
Info Windows | Maps SDK for Android | Google Developers

좋은 웹페이지 즐겨찾기