我尝试为GoogleMap OnInfoWindowClickListener制作一个if语句。 但每次我来到别的地方。 提示?
Marker s780 = googleMap.addMarker(new MarkerOptions()
.position(new LatLng(52.16033, 7.87964))
.title("780")
.icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_780)));
Marker s149 = googleMap.addMarker(new MarkerOptions()
.position(new LatLng(52.60861, 7.99206))
.title("149")
.icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_149)));
googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
if (marker.equals("s780"))
Toast.makeText(getActivity(), "Marker 727", Toast.LENGTH_SHORT).show();
if (marker.equals("s149"))
Toast.makeText(getActivity(), "Marker 725", Toast.LENGTH_SHORT).show();
else
Toast.makeText(getActivity(), "Argument:"+marker, Toast.LENGTH_SHORT).show();

答案 0 :(得分:0)
在您的代码中:if (marker.equals("s780"))
,marker
的类型为Marker
,而"s780"
的类型为String
。当然equals
返回false。您应该将其更改为:
final Marker s780 = ...
googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
if (marker == s780) {
...
}
}
}
答案 1 :(得分:0)
您应该使用Marker类的getId()函数。
例如在:
中public void onInfoWindowClick(Marker marker) {
StringBuilder builder = new StringBuilder(marker.getId());
String str = builder.deleteCharAt(0).toString() ;
int id = Integer.parseInt(str) ;
if (id == 0)
Toast.makeText(getActivity(), "Marker 780 was pressed", Toast.LENGTH_LONG).show();
}
然后你可以用int进行简单的比较,这样更容易。 标记的ID按照它们添加到地图的顺序排列,从0开始。因此标记s780的id为0,标记s149的id为1。
我希望帮助
答案 2 :(得分:0)
您错过了else
,因此,即使第一个if (s780)
为true
,您也可以使用<{p}}制作Toast
Marker 727
然后再次检查if (s149)
,但最终进入else
并与
参数:S780
googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
if (marker.equals("s780"))
Toast.makeText(getActivity(), "Marker 727", Toast.LENGTH_SHORT).show();
else //You missed this else
if (marker.equals("s149"))
Toast.makeText(getActivity(), "Marker 725", Toast.LENGTH_SHORT).show();
else
Toast.makeText(getActivity(), "Argument:"+marker, Toast.LENGTH_SHORT).show();
答案 3 :(得分:0)
我为我找到了一条路:
if (marker.getTitle().equals("555 Test"))
{ Toast.makeText(getActivity(), "Marker 5", Toast.LENGTH_SHORT).show();}
谢谢你的帮助。