2014-12-18 6 views
2

Google지도에 두 가지 유형의 정보 창을 표시하려고합니다. 마커를 클릭하면 맞춤 정보 창이 호출되지만지도를 클릭하면 다른 맞춤 정보 창이 표시되지 않습니다. 또한 로그가 있는데 setOnMapClickListener 내에서 getInfoContents가 호출되지 않는 것으로 나타났습니다. setOnMarkerListener 내의 getInfoContents가 불려갑니다. ... 왜?getInfoContents()가 호출되지 않았습니다.

 mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 
      @Override 
      public void onMapClick(LatLng latLng) { 
       mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() { 
        @Override 
        public View getInfoWindow(Marker marker) { 
         Log.v("a", "getInfoWindow"); 
         return null; 
        } 

        @Override 
        public View getInfoContents(Marker marker) { 
         Log.v("a", "getInfoContents"); 
         View view = getActivity().getLayoutInflater().inflate(R.layout.marker_default, null); 
         TextView title = (TextView) view.findViewById(R.id.default_infowindow); 
         title.setText(mCompany); 
         return view; 
        } 
       }); 
      } 
     }); 
     mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
      @Override 
      public boolean onMarkerClick(Marker marker) { 
       mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() { 
        @Override 
        public View getInfoWindow(Marker marker) { 
         return null; 
        } 

        @Override 
        public View getInfoContents(Marker marker) { 
         View view = getActivity().getLayoutInflater().inflate(R.layout.marker_window, null); 
         ImageView badge = (ImageView) view.findViewById(R.id.badge); 
         badge.setImageResource(R.drawable.ic_launcher); 
         TextView title = (TextView) view.findViewById(R.id.title); 
         TextView snippet = (TextView) view.findViewById(R.id.snippet); 
         title.setText(mCompany); 
         snippet.setText(mAddress); 
         return view; 
        } 
       }); 
       return false; 
      } 
     }); 

답변

1

Google Maps reference에 따르면 한 번에 하나의 정보창 만 표시 할 수 있습니다. 또한 마커를 두드리면 getInfoConents() 메서드가 호출됩니다.

프로그래밍 방식으로 정보 창을 표시하려면 showInfoWindow() 메서드를 호출해야합니다.

+0

감사합니다! 나는 그것을 몰랐다. 다른 방법을 시도해 보겠습니다! – tarofess

1

나는 같은 문제가있어서, 콜백을 액티비티가 인식하도록 만드는 것을 잊었다. 다음을 추가하십시오.

mMap.setInfoWindowAdapter(this); 
관련 문제