我在GoogleMap中有一个InfoWindow,其中包含按钮,我正在尝试使用choose007的hack来改变它们的工作(请参阅此question)。
我的方法依赖于获取InfoWindow中按钮的屏幕坐标,并在onDispatchTouchEvent
函数中对其进行操作。
但是,所有获取屏幕坐标的尝试都会失败。我在onDispatchTouchEvent
内调用它(即创建它之后很久),但按钮和视图都得到0,0。
我认为这是因为InfoWindow是某种特殊情况而不是实际的UI元素? (IIRC整个视图基本上只是一个位图,它在地图上是blit?)有没有办法获得坐标?我应该提一下,我试图避免涉及魔术数字的任何事情,比如在链接中选择了@7的解决方案。
以下是我正在做的事情的简化说明:
public boolean onDispatchTouchEvent(MotionEvent ev) {
int[] location = new int[2];
mTestButton.getLocationOnScreen(location); // Returns 0,0
mTestView.getLocationOnScreen(location); // Returns 0,0
return false;
}
public View getInfoContents(Marker marker) {
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mTestView = inflater.inflate(R.layout.info_window, null);
mTestButton = ((Button) mTestView.findViewById(R.id.test_button));
}
答案 0 :(得分:1)
所以你已经在infowindow上走了一条死胡同,因为那不是你应该用来制作有按钮等的真正定制的信息窗口。不是这个扬基工程师不会这样做。
如果您想要在用户单击标记时显示自定义内容,则捕获标记单击在标记坐标处显示您的视图,将地图中心放置到标记坐标并从}返回1} em> true
https://developers.google.com/maps/documentation/android/marker#marker_click_events
onMarkerClick
单击或点按标记时调用。 参数 标记单击的标记。 返回
如果侦听器已使用该事件(即,不应发生默认行为),则为true,否则为false(即,应发生默认行为)。默认行为是相机移动到地图并显示信息窗口。
那么我如何在地图上放置一些形状很好的东西呢?我需要一个图像或一些花哨的线条艺术,而这些艺术并不是我在源头上可以获得的东西我&#39 ;我在这里工作剪切和粘贴。
那么如何在地图上放置一个按钮。好吧,我可以这样做但是对于这个例子,按钮位于静态位置。 Pseudo infowindow您必须将按钮或图像移动到标记的坐标,并且可以将地图置于标记坐标的中心。
public boolean onMarkerClick (Marker marker)
就个人而言,当点击信息窗口时,我只需在整个屏幕上显示一个豪华的透明覆盖图。我的意思是用户必须以任何一种方式点击某些内容。
祝你好运 签 单击InfoWindow侦听器。