不同的InfoWindow用于不同的标记

时间:2013-03-05 17:55:14

标签: android infowindow google-maps-android-api-2

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

是否有不同的方法可以为不同的标记组提供不同的布局?

3 个答案:

答案 0 :(得分:4)

  

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

他们当然不必这样做。您将Marker作为参数传递给每个方法,因此可以根据Marker中的信息执行不同的操作。

答案 1 :(得分:1)

但你可以。在给标记InfoWindow充气之前进行检查,并根据您的支票对其进行不同的布局。

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

您可以通过运行

检查标记的位置坐标是什么

clickMarkerLatLng = args.getPosition();

并根据此确定应显示InfoWindow

答案 2 :(得分: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;
            }
        });