2013-09-30 5 views
0

Google지도 확장 라이브러리를 사용하고 있습니다. 나는 이것을 가지고있다 :마커 정보 창에서 데이터를 가져 오지 못함을 클릭하십시오. Google 맵 v2 android

int nsize = visibleMarkers.size(); 
       for (int i = 0; i < nsize; i++) { 
        String title = visibleMarkers.valueAt(i).getTitle(); 
        String desc = visibleMarkers.valueAt(i).getDesc(); 
        Float latitude = visibleMarkers.valueAt(i).getLat(); 
        Float longitude = visibleMarkers.valueAt(i).getLon(); 

        m = map.addMarker(new MarkerOptions() 
          .position(new LatLng(latitude, longitude)) 
          .title(title) 
          .icon(BitmapDescriptorFactory 
            .fromResource(R.drawable.snotel_marker))); 

       } 

그리고 맵은 모든 마커로 잘 채워질 것이다.

난 클릭에 마커 창에서 설명과 제목을 볼 수있는 토스트에 데이터를 추가하는 것을 시도하고있다 :이 setOnInfoWindow 수신기를 추가 할 때

map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() { 

          @Override 
          public void onInfoWindowClick(Marker marker) { 
           Toast.makeText(MainActivity.this, 
             "Title: " + visibleMarkers.valueAt(i).getTitle(), 
             Toast.LENGTH_SHORT).show(); 
          } 
         }); 

, i 변수가 최종해야합니다. 내 visibleMarkers SparseArray에서 마커의 제목을 얻고 싶습니다. 그러나 클릭하는 마커에서 데이터를 가져 오는 방법을 파악할 수 없습니다. . descit (마침표)를 사용하면 마커 클릭에 대한 정보가 표시되므로 desc에 정보가 있음을 알고 있습니다.

무엇이 여기에 있습니까?

int nsize = visibleMarkers.size(); 
       for (int i = 0; i < nsize; i++) { 
        MapMarkers marks = new MapMarkers(); 
        String title = visibleMarkers.valueAt(i).getTitle(); 
        String desc = visibleMarkers.valueAt(i).getDesc(); 
        Float latitude = visibleMarkers.valueAt(i).getLat(); 
        Float longitude = visibleMarkers.valueAt(i).getLon(); 

        m = map.addMarker(new MarkerOptions() 
          .position(new LatLng(latitude, longitude)) 
          .title(title) 
          .icon(BitmapDescriptorFactory 
            .fromResource(R.drawable.snotel_marker))); 

        marks.setTitle(title); 
        marks.setDesc(desc); 

        markerInfo.put(m, marks); 

        map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() { 
         @Override 
         public void onInfoWindowClick(Marker marker) { 

          MapMarkers markInfo = markerInfo.get(marker); 

          Intent i = new Intent(MainActivity.this, 
            MarkerInformation.class); 
          i.putExtra("name", markInfo.getTitle()).putExtra(
            "description", markInfo.getDesc()); 
          i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
          startActivity(i); 

         } 

        }); 
       } 

합니까 올바른 것 :

편집 :::

나는 다른 배열에 마커 m 내 데이터를 추가 내 onPostExecute를 변경? 모두의

답변

2

먼저 당신의 setOnInfoWindowClickListener (가) "내가"당신을 누르면 한 마커과 무관하고, 있는 유일한 연결이 onInfoWindowClick 방법으로 전달되는 marker 객체입니다. 당신이이 방법으로 문제가 더 설명해 주시겠습니까하지 않을 경우, 필요한 모든 데이터가이 마커 객체에서 직접 데이터를 얻을 수 있습니다

+0

이 정보는 어떻게 얻을 수 있습니까? visibleMarkers ??? ??? 나에게 데이터를주는 것은 보이지 않는다. 응답 해 주셔서 감사합니다. – jasonflaherty

+0

@jasonflaherty marker.getTitle()은 어떨까요? –

+0

그래, @ MaciejGórski가 'marker.getTitle()'을 말하자. 여기서 마커는 'onInfoWindowClick'메서드에서받은 객체입니다. –

1

이이

Toast.makeText(MainActivity.this, "Title: " + m.getTitle(), Toast.LENGTH_SHORT).show(); 

참고하려고 m의 필수 밖에 선언한다.

+0

감사합니다 swati, 그건 분명히 작동하지만 desc 얻을 수 없습니다. 현재 업데이트 중입니다. – jasonflaherty