OnInfowWindowsListenerClick 和 IF 其他

OnInfowWindowsListenerClick and IF Else

我尝试为 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();

在您的代码中:if (marker.equals("s780"))markerMarker 类型,而 "s780"String 类型。当然equalsreturns假的。您应该将其更改为:

final Marker s780 = ...
googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
    @Override
    public void onInfoWindowClick(Marker marker) {
        if (marker == s780) {
            ...
        }
    }
}

您应该使用标记的 getId() 函数 class。

例如里面的:

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。

希望对您有所帮助

您刚刚错过了一个 else,所以即使第一个 if (s780)true,您也会用

制作一个 Toast

Marker 727

然后再次检查 if (s149),但最终进入 else 并与

敬酒

Argument: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();

我找到了适合我的方法:

if (marker.getTitle().equals("555 Test")) 
 { Toast.makeText(getActivity(), "Marker 5", Toast.LENGTH_SHORT).show();}

谢谢你的支持。