2

我正在使用 Google Maps v2 API 并在地图上放置标记。标记代表不同的东西,所以我想为每类标记有一个自定义的 InfoWindow 布局。问题是每次选择标记时都会调用的覆盖getInfoContentsand将为每个标记提供相同的布局。getInfoWindow

有没有不同的方法可以做到这一点,以便我可以为不同的标记组充气不同的布局?

4

3 回答 3

4

问题是每次选择标记时都会调用的覆盖 getInfoContents 和 getInfoWindow 将为每个标记提供相同的布局。

他们当然不必这样做。您被Marker作为参数传递给每个方法,因此可以根据Marker.

于 2013-03-05T17:59:49.960 回答
1

但是你可以。在为标记充气之前进行检查,InfoWindow并根据您的检查充气不同的布局。

当您Markerpublic View getInfoContents(Marker args)方法中收到 时,创建一个 if 语句,该语句将测试此标记是否与您想要的类型相对应,并基于此扩展相关布局。

例如,您可以通过运行检查标记的位置坐标是什么

clickMarkerLatLng = args.getPosition();

并基于此确定InfoWindow应该呈现的内容。

于 2013-03-05T18:02:52.343 回答
1

它非常简单 map.setInfoWindowAdapter(new InfoWindowAdapter() {

            @Override
            public View getInfoWindow(Marker marker) {
                // TODO Auto-generated method stub
                View v;
                LayoutInflater inflator=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
                v=inflator.inflate(R.layout.info_inflator, null);
                TextView text=(TextView)v.findViewById(R.id.title);
                Button ok_button=(Button) v.findViewById(R.id.ok_button);
                text.setText(marker.getTitle());
                ok_button.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub

                    }
                });

                return v;
            }

            @Override
            public View getInfoContents(Marker marker) {
                // TODO Auto-generated method stub
                return null;
            }
        });
于 2013-06-04T11:12:12.840 回答