为什么标记的信息窗口没有显示?

时间:2013-08-23 18:48:01

标签: android google-maps-api-2

当我点击地图的标记时,我无法理解为什么信息窗口不显示。我在开发者安卓网站上看到,我应该只添加标记并给它们标题,片段等等。但结果却一无所获。

public class ClubMapActivity extends DefaultActivity implements GoogleMap.OnMarkerClickListener {
    private GoogleMap mMap;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.clubmap);
        Bundle bundle = getIntent().getExtras();
        double lat = bundle.getDouble("latitude");
        double lng = bundle.getDouble("longitude");


        mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
        mMap.addMarker(new MarkerOptions()
                .position(new LatLng(lat, lng))
                .title(bundle.getString("clubNmae")).snippet("AAA"));

        animateCameraTo(lat, lng);
        CameraUpdate zoom=CameraUpdateFactory.zoomTo(20);

        mMap.animateCamera(zoom);


    }

    public void animateCameraTo(final double lat, final double lng)
    {
        CameraUpdate center=
                CameraUpdateFactory.newLatLng(new LatLng(lat, lng));
        CameraUpdate zoom=CameraUpdateFactory.zoomTo(18);

        mMap.moveCamera(center);
        mMap.animateCamera(zoom);
    }


    @Override
    public boolean onMarkerClick(Marker marker) {
        if(marker.isInfoWindowShown()) {
            marker.hideInfoWindow();
        } else {
            marker.showInfoWindow();
        }
        return true;
    }
}

7 个答案:

答案 0 :(得分:16)

默认情况下,如果标记设置了标记,则当用户点按标记时会显示信息窗口。

确保您的.title(bundle.getString("clubNmae")返回非空值,否则在点击标记时无法看到信息窗口。

答案 1 :(得分:1)

看起来你不是在调用setOnMarkerClickListener。

https://developers.google.com/maps/documentation/android/marker

答案 2 :(得分:1)

添加到@ fish40上面的答案:title必须不仅是NotNull而且NotEmpty,即使你传递“”作为标记标题,信息窗口也不会显示。

答案 3 :(得分:0)

试试这段代码,它对我有用....

XML文件

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">


        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <TextView
                android:id="@+id/showTitle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@android:color/black"
                android:textSize="20sp"
                android:textStyle="bold"
                android:hint="Current Location"
              />

            <TextView
                android:id="@+id/showLat"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:hint="Latitude"/>

            <TextView
                android:id="@+id/showLong"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:hint="Longitued"/>
        </LinearLayout>


    </LinearLayout>

JAVA代码

     if(mMap !=null) {
                mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
                    @Override
                    public View getInfoWindow(Marker marker) {
                        return null;
                    }

                    @Override
                    public View getInfoContents(Marker marker) {

                        View v = getLayoutInflater().inflate(R.layout.info_window,null);
                        TextView showTitle = (TextView)  v.findViewById(R.id.showSnappest);
                        TextView showLat   = (TextView) v.findViewById(R.id.showLat);
                        TextView showLong  = (TextView) v.findViewById(R.id.showLong);

                        LatLng latLng = marker.getPosition();
                        showTitle.setText(marker.getTitle());
                        showLat.setText("Latitude:"+latLng.latitude);
                        showLong.setText("Longitude:"+latLng.longitude);
                        return v;
                    }
                });
            }

答案 4 :(得分:0)

我还有另一种情况,请注意,如果您调用GoogleMap.clear(),则setInfoWindowAdapter中设置的所有适配器都将消失。您需要在调用清除后再次设置它们

答案 5 :(得分:0)

用作此:

GoogleMap mMap;
MarkerOptions options = new MarkerOptions();
Marker marker = mMap.addMarker(options.position(new LatLng(lat,lng)));
marker.showInfoWindow();
  

showInfoWindow()方法可用于Marker对象,而不适用于   MarkerOptions个对象。

答案 6 :(得分:0)

在我的情况下,由于同时设置OnMarkerClickListener和OnInfoWindowClickListener且MarkerClickListener返回true,所以没有显示信息窗口,如果将其更改为false或删除MarkerClickListener,则会再次显示信息窗口。