将布局置于 google 地图标记上方 Android

Put layout above google Map marker Android

我有一个自定义 "InfoWindow" 标记,它有按钮,但默认用户不能点击按钮或在该布局的列表上滑动,因为该信息 window 就像图片。

注意:中的解决方案不适用于我的问题,因为不同的标记具有不同的信息Windows(我已经尝试修改该答案但没有成功)。

所以,为了解决我的问题,我还是在用户点击标记时在标记上方放置了一个布局。如何实现将布局放在标记上方?

在这个例子中,我在布局中有一个包含可点击项目的列表

我通过添加自定义信息 window 适配器实现了这一点。然后将其设置为我的地图。在适配器的 getInfoWindow() 中,您可以将所有点击侦听器写入您的 views.Here 是代码。

    private class CustomInfoWindowAdapter implements GoogleMap.InfoWindowAdapter {


        private View view;

        public CustomInfoWindowAdapter() {

            view = getLayoutInflater().inflate(R.layout.custom_info_window, null);
        }

        @Override
        public View getInfoContents(Marker marker) {

            if (marker != null
                    && marker.isInfoWindowShown()) {
                marker.hideInfoWindow();
                marker.showInfoWindow();
            }
            return null;
        }

        @Override
        public View getInfoWindow(final Marker marker) {

            final ImageView image = ((ImageView) view.findViewById(R.id.badge));

            final String title = marker.getTitle();
            final TextView titleUi = ((TextView) view.findViewById(R.id.title));
            if (title != null) {
                titleUi.setText(title);
            } else {
                titleUi.setText("");
            }


            return view;
        }

    }

并设置为按此映射

 private GoogleMap mMap;
mMap.setInfoWindowAdapter(new CustomInfoWindowAdapter());

希望对您有所帮助。编码愉快...

可以在 link 上找到解决方案:

基本思想是使用 PopupWindow 在屏幕上显示布局,然后使用答案中描述的 updatePopup 方法调整其位置以将其放置在标记上。每次相机变化(监听CameraChangeListener),你调用updatePopup方法。