android-maps-extensions infoWindow不显示

时间:2014-04-02 13:31:35

标签: android android-maps-extensions

我需要在地图上显示> 100个标记,并在点击标记后显示信息窗口。 我使用了android谷歌地图api v2,但它与这么多的标记相比。所以我决定切换到android-maps-extensions。我做完后,点击标记后信息窗口停止显示。

这是我的代码:

private void prepareMap() {
    SupportMapFragment fragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.locationsMap);
    map = fragment.getExtendedMap();

    ClusteringSettings settings = new ClusteringSettings();
    settings.clusterOptionsProvider(new ClusterOptionsProvider() {
        @Override
        public ClusterOptions getClusterOptions(List<Marker> markers) {
            float hue = BitmapDescriptorFactory.HUE_RED;
            BitmapDescriptor icon = BitmapDescriptorFactory.defaultMarker(hue);
            return new ClusterOptions().icon(icon);
        }
    });
    settings.clusterSize(100);
    settings.addMarkersDynamically(true);
    map.setClustering(settings);

    map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {
            // breakpoint here are working. marker is not null
            marker.showInfoWindow();
            return false;
        }
    });
}

public void onLoadFinished(android.support.v4.content.Loader loader, Cursor cursor) {
    if (map != null) {
        cursor.moveToFirst();
        int count = cursor.getCount();
        for (int i = 0; i < count; i++) {

            Location location = new Location(cursor);

            MarkerOptions options = new MarkerOptions();
            options.position( new LatLng(location.getLatitude(), location.getLongitude()));
            options.title(location.getTitle()); // title is not null
            options.snippet(location.getAddress()); // address is not null
            options.data(location);
            map.addMarker(options);
            cursor.moveToNext();
        }
    }
}

有什么建议吗?我尝试使用自己的InfoWindowAdapter,但它没有为适当的内容缩放此窗口,但是我在xml中使用了wrap_content属性。

1 个答案:

答案 0 :(得分:0)

由于不支持在ClusterOptions(尚未)上设置标题,因此您必须使用InfoWindowAdapter(您可以单独提出问题,说明为什么它不能按您的意愿运行)或自己将title添加到ClusterOptions,并确保将其值转发到代表群集的virtual标记。这听起来很复杂,但相当容易。您可能还想在GitHub上添加关于不支持clustrers的标题的问题 之后你可以使用类似的东西:

return new ClusterOptions().icon(icon).title("Test");

然后你必须找出最符合你需求的标题。您很可能希望使用List<Marker>来计算这组标记的标题。

注意:如果缩放到足以显示单独的标记,则可以单击它们以显示标题。如果没有,那么代码中就会出现更多错误。