0

我得到了带有一些标记的谷歌地图,但所有标记都有羞耻信息如何为不同的标记制作不同的信息?

for (Station station : stationsListResponse.data.stations) {
            final Station st = station;
            map.addMarker(new MarkerOptions().position(new LatLng(station.getLatitude(), station.getLongitude())));
            map.setInfoWindowAdapter(new InfoWindowAdapter() {

                @Override
                public View getInfoWindow(Marker arg0) {
                    return null;
                }

                @Override
                public View getInfoContents(Marker marker) {

                    View v = getLayoutInflater().inflate(R.layout.info_window, null);
                    TextView info= (TextView) v.findViewById(R.id.info);
                    info.setText(st.street+"\n"+st.city);
                    return v;
                }
            });
        }
4

2 回答 2

2

所有标记具有相同信息的原因是因为您将 Station st = station 声明为 final。

而是将您希望显示的信息设置为标记的属性,然后您可以在调用 getInfoContents(..) 时访问它。

        for (Station station : stationsListResponse.data.stations) 
        {
            map.addMarker(new MarkerOptions().position(new LatLng(station.getLatitude(), station.getLongitude())).snippet(station.street+"\n"+station.city));
        }

        map.setInfoWindowAdapter(new InfoWindowAdapter() {

            @Override
            public View getInfoWindow(Marker arg0) {
                return null;
            }

            @Override
            public View getInfoContents(Marker marker) {

                View v = getLayoutInflater().inflate(R.layout.info_window, null);
                TextView info= (TextView) v.findViewById(R.id.info);
                info.setText(marker.getSnippet());
                return v;
            }
        });
于 2013-09-26T12:23:09.047 回答
0

这样做

map.setInfoWindowAdapter(new InfoWindowAdapter() {

        @Override
        public View getInfoContents(Marker marker) {
            return null;
        }

        @Override
        public View getInfoWindow(Marker marker) {
              View v = getLayoutInflater().inflate(R.layout.info_window, null);
              TextView info= (TextView) v.findViewById(R.id.info);
              info.setText(st.street+"\n"+st.city);
              return v;
        }
    });
于 2013-09-26T12:15:21.163 回答