我已移至android-maps-extensions进行群集。但我想在运行时更改标记的图标。在原始谷歌地图中,lib标记有一个setIcon方法,在扩展库中缺少。是否可以将该方法添加到Marker实现中,或者我应该寻找另一种解决方法,例如删除标记并添加新标记而不是更改图标?
答案 0 :(得分:0)
版本1.3.1您可以直接从项目网站下载,但没有添加setIcon
。
当前状态版本1.4即将发布,它包括setIcon
和setAnchor
。我将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)));
}
其中群集标记是我的可绘制的,我正在它上面写文字。