使用android-maps-extensions更改标记图标

时间:2013-08-07 13:33:42

标签: android google-maps-markers android-maps-extensions

我已移至android-maps-extensions进行群集。但我想在运行时更改标记的图标。在原始谷歌地图中,​​lib标记有一个setIcon方法,在扩展库中缺少。是否可以将该方法添加到Marker实现中,或者我应该寻找另一种解决方法,例如删除标记并添加新标记而不是更改图标?

2 个答案:

答案 0 :(得分:0)

版本1.3.1您可以直接从项目网站下载,但没有添加setIcon

当前状态版本1.4即将发布,它包括setIconsetAnchor。我将zip文件上传到code.google.com时遇到了一些问题。

如果您不想使用git克隆存储库,可以从GitHub repo获取最新版本:https://github.com/mg6maciej/android-maps-extensions/archive/master.zip

请注意,setIcon仅适用于您添加到地图的Marker。到目前为止,您无法以这种方式更改群集图标。

修改

更改ClusterMarker.setIcon代码
@Override
public void setIcon(BitmapDescriptor icon) {
    throw new UnsupportedOperationException();
}

类似于:

@Override
public void setIcon(BitmapDescriptor icon) {
    if (virtual != null) {
        virtual.setIcon(icon);
    }
}

应该适用于大多数情况。

答案 1 :(得分:0)

如果您想要实现自定义群集图标

这样做..........

for (Cluster cluster : clusterList) {

    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inMutable = true;
    options.inPurgeable = true;
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
            R.drawable.cluster_marker, options);

    Canvas canvas = new Canvas(bitmap);

    Paint paint = new Paint();
    paint.setColor(getResources().getColor(R.color.white));
    paint.setTextSize(30);

    canvas.drawText(String.valueOf(cluster.getMarkerList().size()), 10,
            40, paint);

    googleMap.addMarker(new MarkerOptions()
            .position(
                    new LatLng(cluster.getClusterLatitude(), cluster
                            .getClusterLongitude()))
            .snippet(String.valueOf(cluster.getMarkerList().size()))
            .title("Cluster")
            .icon(BitmapDescriptorFactory.fromBitmap(bitmap)));

}

其中群集标记是我的可绘制的,我正在它上面写文字。