如何在Android中以编程方式触发自定义信息窗口

4
我使用自定义窗口信息,但是调用marker.showInfoWindow();总是呈现默认窗口信息,而如果用户点击标记,自定义窗口信息将被呈现。我能否通过编程方式打开自定义窗口信息?
我的情况是在绘制地图上的标记时,一个特定的标记应该显示它的窗口信息(所以没有用户交互),但最好是自定义的,如我定义的CustomWindowInfoAdapter类。
编辑:很乐意删除这个问题,这只是因为我太笨拙了,但也许还有更多像我这样的人。无论如何,我的问题在于在我的方法resourceRepresentationsNearBy()中添加适配器之前调用showInfoWindow,因此仅可能出现默认信息窗口。因此,我的错误代码:
    private void setUpMap() {
    ...

    // Add search result markers to the map.
    resourceRepresentationsNearBy();

    // Setting up custom info window
    mMap.setInfoWindowAdapter(new CustomInfoWindowAdapter());

            ...
   }

而正确的代码是:

    private void setUpMap() {
    ...

    // Setting up custom info window
    mMap.setInfoWindowAdapter(new CustomInfoWindowAdapter());

    // Add search result markers to the map.
    resourceRepresentationsNearBy();

            ...
   }

1
如果您不展示代码的相关部分,我们无法判断您代码中的错误。 - MaciejGórski
实际上,您对代码的自信暗示帮助了我。我的代码很简单,所以我并没有考虑那里会有错误。但是,我首先绘制标记,然后添加窗口信息适配器。由于我在绘制标记方法中调用showInfoWindow,因此只能打开默认信息窗口。我想我应该接受这个答案,道义是,始终发布代码,或者更仔细地检查。谢谢Maciej。 - learnAndImprove
很高兴我能帮到你。如果你想在未来帮助读者,编辑问题以放置错误代码,添加一个答案来展示问题所在,并最终接受它。 - MaciejGórski
1个回答

0

试试这个:

private static GoogleMap _googleMap = null;
...


public static void initialize_google_map()
{
    _googleMap = ((MapFragment)Context.getFragmentManager().findFragmentById(R.id.map)).getMap(); 

    ...

    _googleMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
        @Override
        public View getInfoWindow(Marker marker) {
            return build_info_window(marker);
        }
        @Override
        public View getInfoContents(Marker arg0) {return null;}
    });


}


private static View build_info_window(Marker marker)
{
    LayoutInflater inflater = (LayoutInflater)Context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View custom_info_window = inflater.inflate(R.layout.custom_info_window, null);

    TextView tv_title = (TextView)custom_info_window.findViewById(R.id.tv_title);
    tv_title.setText("Title");

    etc... etc...    
}

}

希望能有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接