10

当我点击地图的标记时,我无法弄清楚为什么信息窗口没有出现。我在开发者 android 网站上读到,我只应该添加标记并给他们标题、片段等。但结果什么都没有。

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;
    }
}
4

7 回答 7

19

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

确保您.title(bundle.getString("clubNmae")返回的不是空值,否则单击标记时将看不到信息窗口。

于 2013-08-25T16:06:06.980 回答
1

看起来您不是在调用 setOnMarkerClickListener。

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

于 2013-08-23T21:11:59.630 回答
1

添加到上面的@fish40 答案:标题不仅必须是 NotNull,而且还必须是 NotEmpty,即即使您通过 "" 作为标记标题,信息窗口也不会显示。

于 2014-03-15T16:33:57.523 回答
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;
                    }
                });
            }
于 2017-11-09T13:54:19.080 回答
0

我遇到过另一种情况,请注意,如果您调用 GoogleMap.clear(),setInfoWindowAdapter 中设置的所有适配器都将消失。调用 clear 后需要重新设置

于 2018-08-09T10:18:33.027 回答
0

像这样使用:

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

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

于 2019-04-17T07:20:45.060 回答
0

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

于 2020-02-21T15:44:15.300 回答