我正在通过此reference在标记上显示自定义infoWindow。 现在我可以显示自定义infoWindow了
但问题是我无法在每个按钮上获得右键单击事件。 例如当我点击button1时,它会调用button2的touchlistener,依此类推。 我的代码是:
this.button1Listener = new OnInfoWindowElemTouchListener(
button1, getResources().getDrawable(
R.drawable.ic_plusone_medium_off_client),
getResources().getDrawable(
R.drawable.ic_plusone_tall_off_client)) {
@Override
protected void onClickConfirmed(View v, Marker marker) {
// Here we can perform some action triggered after clicking the
// button
Toast.makeText(MapActivity.this, "Button1", Toast.LENGTH_SHORT)
.show();
}
};
this.button2Listener = new OnInfoWindowElemTouchListener(
button2, getResources().getDrawable(
R.drawable.ic_plusone_medium_off_client),
getResources().getDrawable(
R.drawable.ic_plusone_tall_off_client)) {
@Override
protected void onClickConfirmed(View v, Marker marker) {
// Here we can perform some action triggered after clicking the
// button
Toast.makeText(MapActivity.this, "Button2", Toast.LENGTH_SHORT)
.show();
}
};
this.button3Listener = new OnInfoWindowElemTouchListener(
button3, getResources().getDrawable(
R.drawable.ic_plusone_medium_off_client),
getResources().getDrawable(
R.drawable.ic_plusone_tall_off_client)) {
@Override
protected void onClickConfirmed(View v, Marker marker) {
// Here we can perform some action triggered after clicking the
// button
Toast.makeText(MapActivity.this, "Button3", Toast.LENGTH_SHORT)
.show();
}
}; and so on.......
this.button1.setOnTouchListener(button1Listener);
this.button2.setOnTouchListener(button2Listener);
this.button3.setOnTouchListener(button3Listener);
.......
// googleMap.setInfoWindowAdapter(null);
googleMap.setInfoWindowAdapter(new InfoWindowAdapter() {
// Use default InfoWindow frame
@Override
public View getInfoWindow(Marker marker) {
return null;
}
// Defines the contents of the InfoWindow
@Override
public View getInfoContents(Marker marker) {
button1Listener.setMarker(marker);
button2Listener.setMarker(marker);
button3Listener.setMarker(marker);
......
// We must call this to set the current marker and infoWindow
// references
// to the MapWrapperLayout
mapWrapperLayout.setMarkerWithInfoWindow(marker, infoWindow);
return infoWindow;
}
});
请告诉我,我做错了什么? 有时代码工作得很好,但大部分时间它都不起作用。 提前谢谢。
答案 0 :(得分:0)
Google地图V2中的InfoWindow是一个图像,该库将所有这些图像呈现为图像。阅读maps Android API v2中“自定义信息窗口”中的“注意”。
所以你添加的所有按钮都不起作用。
如果你真的想这样做,你必须做一些代码。我找到了一个here
答案 1 :(得分:0)
最后,我解决了按钮点击事件不匹配的问题。 问题出在这里。
// MapWrapperLayout initialization
// 39 - default marker height
// 20 - offset between the default InfoWindow bottom edge and it's content bottom edge
mapWrapperLayout.init(map, getPixelsFromDp(this, 39 + 20));
所以我改变了:
mapWrapperLayout.init(map, getPixelsFromDp(this, 39 + 20));
到
mapWrapperLayout.init(map, getPixelsFromDp(this, 0));
因此,infowindow底边与其内容之间不会有任何偏差。
我希望这会对某人有所帮助。