marker.showInfoWindow()使用谷歌地图API V2 Lite模式无效

时间:2015-03-24 00:35:01

标签: android google-maps

Google doc非常清楚如何在精简模式下使用showInfoWindow标记:

  

如果设置标记的title(),则默认信息窗口将为   用户点按标记时出现。 您可以显示信息窗口   通过在标记上调用showInfoWindow()以编程方式。 你可以   还可以通过InfoWindowAdapter界面创建自定义信息窗口。   https://developers.google.com/maps/documentation/android/lite

以下是我的代码的一部分:

@Override
public void onMapReady(GoogleMap googleMap) {
    googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
        @Override
        public void onMapClick(LatLng latLng) {

        }
    });
    googleMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {

        @Override
        public void onMapLongClick(LatLng latLng) {

        }
     });

    googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {
            marker.showInfoWindow();
            return true;
        }
    });

    BitmapDescriptor skierIcon = BitmapDescriptorFactory.fromResource(R.drawable.skiericon);
    markers.add(googleMap.addMarker(new MarkerOptions()
            .position(new LatLng(mountain_latitude+0.01, mountain_longitude+0.01))
            .title("Bob")
            .visible(true)
            .icon(skierIcon)));


    markers.add(googleMap.addMarker(new MarkerOptions()
            .position(new LatLng(mountain_latitude-0.01, mountain_longitude-0.01))
            .title("Alice")
            .icon(skierIcon)));
    for(Marker marker: this.markers){
        marker.showInfoWindow();
        boolean ret = marker.isInfoWindowShown();
    }
}

我的问题是marker.isInfoWindowShown()总是返回false。

以下是我的称呼方式

        fragmentTransaction = getFragmentManager().beginTransaction();
        fragmentTransaction.add(R.id.map, mapFragment);
        fragmentTransaction.commit();

        mapFragment.getMapAsync(this);

1 个答案:

答案 0 :(得分:0)

请记住,地图的渲染是一个异步过程,您可以在onMapReady()内创建标记,然后执行此方法,然后检查您的标记是否正在显示。