2016-07-23 2 views
-1

Google지도에서 맞춤 마커를 작업하고 있지만 마커 세부 정보 목록이 GoogleMap.InfoWindowAdapter에 들어오지 않는 이유는 단 한 번뿐입니다. 그 때 모든 데이터가 완벽하게 표시되기 때문에 기본 마커에 데이터가 표시되기 때문입니다.왜 GoogleMap.InfoWindowAdapter 내부 마커 목록이 작동하지 않습니까?

for (int i = 0; i < mStringLocation.getMerchants().size(); i++) { 

    double latitude = mStringLocation.getMerchants().get(i).getLocation().getLatitude(); 
    double longitude = mStringLocation.getMerchants().get(i).getLocation().getLongitude(); 

    final String name = mStringLocation.getMerchants().get(i).getName(); 

    LatLng latLng1 = new LatLng(latitude, longitude); 

    MarkerOptions markerOptions = new MarkerOptions(); 
    markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_icon)); 
    markerOptions.position(latLng1); 
    //markerOptions.title(name); 
    map.addMarker(markerOptions); 

    map.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.map_marker_layout, null); 

      mNameTxt = (TextView) view.findViewById(R.id.name_txt); 

      Toast.makeText(getActivity(), "" + name, Toast.LENGTH_SHORT).show(); 

      mNameTxt.setText(name); 

      return view; 
     } 
    }); 

    map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
    @Override 
    public void onInfoWindowClick(Marker marker) { 
     Toast.makeText(getActivity(), "" + name, Toast.LENGTH_SHORT).show(); 
    } 
    }); 
} 

그러나 사용자 정의 마커를 사용할 때 마커를 탭하면 배열의 마지막 색인 값이 표시됩니다.

친절하게도 내 게시물을 살펴보고 해결책이 있는지 알려주십시오.

+0

질문에 "마커 중 하나를 탭하면 배열의 마지막 인덱스 값이 표시됩니다"라는 코드는 없습니다. – CommonsWare

+0

안녕하세요, 기본 마커에 단순한 감사 표시가 없습니다. 항목을 탭하면 세부 정보가 표시되지만 GoogleMap.InfoWindowAdapter 내부에서 작업 할 때 항목을 탭하면 마지막 값이 표시됩니다. –

+0

더 쉽게 시간을 가질 수 있습니다. 질문을 편집하고 "마커 중 하나를 탭하면 배열의 마지막 인덱스 값을 표시합니다"에 대한 코드를 제공하면 도움이됩니다. 나는 이것이 당신의'OnInfoWindowClickListener'의'onInfoWindowClick()'메쏘드라고 생각합니다. [this activity] (https://github.com/commonsguy/cw-omnibus/blob/master/MapsV2/Popups/app/src/main/java/com/commonsware)의 예제 onInfoWindowClick() 메소드를 볼 수 있습니다. /android/mapsv2/popups/MainActivity.java)에서 [this sample app] (https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2/Popups)를 방문하십시오. – CommonsWare

답변

0

번으로 setInfoWindowAdapter() 번으로 전화를 걸었습니다. 한 번만 호출해야합니다.

마찬가지로, setOnInfoWindowClickListener() 번을 여러 번 호출합니다. 한 번만 호출해야합니다.

루프 외부로 해당 호출을 이동하십시오. 및 onInfoWindowClick()에 전달 된 Marker 개체를 사용하여 해당 방법에서 수행해야 할 작업을 식별하십시오. This sample appMarker id가 입력 된 HashMap을 사용하여 getInfoContents()의 모델 개체를 사용하는 방법을 보여줍니다.

관련 문제