我有一个标记的自定义“InfoWindow”,它有按钮,但是对于默认用户,不能点击按钮或在该布局的列表上滑动,因为该信息窗口就像一个图像。
注意:https://stackoverflow.com/a/15040761/2183804中的解决方案不适用于我的问题,因为不同的标记具有不同的信息Windows(我已经尝试修改该答案但没有成功)。
所以,为了解决我的问题,我想在用户点击标记时将布局放在标记上方。如何将布局放在标记上方?
在这个例子中,我有一个列表,其中包含布局中的可点击项目
答案 0 :(得分:0)
我通过添加自定义信息窗口适配器实现了这一目标。然后将其设置为我的地图。在适配器的getInfoWindow()
中,您可以将所有点击侦听器写入您的视图。这是代码。
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());
希望它有所帮助。快乐的编码...
答案 1 :(得分:0)
可以在此链接上找到解决方案:https://stackoverflow.com/a/31995000/3957303
基本思想是使用app.filter('unsafe', function($sce) {
return function(val) {
return $sce.trustAsHtml(val);
};
});
在屏幕上显示布局,然后使用其位置进行播放,使用答案中描述的PopupWindow
方法将其放置在标记上。每次相机更改(聆听updatePopup
)时,都会调用CameraChangeListener
方法。