- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试将图像(从服务器下载)显示为 Google map 上的 map 标记。我正在使用 Android-Maps-Extensions,因为我对 Google Map-Utils 的性能不满意。
现在我想知道如何使用 AME 异步加载 map 标记图像。如果图像不是集群,则任务是显示图像本身。如果是簇,我想显示第一个标记的图像和簇中元素的数量。
到目前为止,我已经完成了以下工作:
1) 设置 map 聚类器
private void setupMapClusterer() {
mClusterOptions = new EClusterOptionsProvider(getContext());
ClusteringSettings clusteringSettings = new ClusteringSettings();
clusteringSettings.addMarkersDynamically(true);
clusteringSettings.clusterOptionsProvider(mClusterOptions);
mMap.setClustering(clusteringSettings);
}
2) 创建集群选项提供程序
public EClusterOptionsProvider(Context context) {
mClusterOptions = new ClusterOptions();
mContext = context;
mIconGenerator = new IconGenerator(context);
// Inflate Layout
View markerView = LayoutInflater.from(context).inflate(R.layout.map_marker, null);
mImageView = (ImageView) markerView.findViewById(R.id.map_marker_image);
mTextView = (TextView) markerView.findViewById(R.id.map_marker_text);
// Setup Icon Generator
mIconGenerator.setContentView(markerView);
}
public Bitmap createIcon(Bitmap bmp, String text) {
mImageView.setImageBitmap(bmp);
mTextView.setText(text);
return mIconGenerator.makeIcon();
}
@Override
public ClusterOptions getClusterOptions(List<Marker> list) {
// Get Bitmap from first marker
Marker first = list.get(0);
mClusterOptions.icon(BitmapDescriptorFactory.fromBitmap(mIconGenerator.makeIcon()));
return mClusterOptions;
}
这给了我一个 map ,其中集群有我的自定义 View (这是正确的),但我不知道在哪里下载图像以及如何将它们放入单个标记,尤其是集群。
当然我不想提前下载所有图片(我们说的是 500 多张)图片。
旁节点:我正在使用 Volley 以异步方式对图像进行 dl。
最佳答案
我创建了使用集群和异步加载标记的简单示例。
希望你能在这里找到一些有用的东西。 https://github.com/pengrad/android-maps-async-markers
我们将使用 Glide 加载图标,我发现它比 Picasso 更稳定。
为要添加到 map 的每个标记调用 loadIconMarker。
MarkerOptions markerOptions = ...
// you should pass some icon before new loaded, or leave default one
//markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.default_marker));
Marker marker = mMap.addMarker(markerOptions);
loadMarkerIcon(marker);
private void loadMarkerIcon(final Marker marker) {
Glide.with(this).load("http://www.myiconfinder.com/uploads/iconsets/256-256-a5485b563efc4511e0cd8bd04ad0fe9e.png")
.asBitmap().fitCenter().into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap bitmap, GlideAnimation<? super Bitmap> glideAnimation) {
BitmapDescriptor icon = BitmapDescriptorFactory.fromBitmap(bitmap);
marker.setIcon(icon);
}
});
}
创建 ClusterIcon 有点难。这是我的 ClusterOptionsProvider。
我使用基本位图 R.drawable.m1
并在其上添加代表簇中标记数量的文本。
public class ClusterIconProvider implements ClusterOptionsProvider {
Resources resources;
Paint paint;
Bitmap base;
public ClusterIconProvider(Resources resources) {
this.resources = resources;
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.WHITE);
paint.setTextAlign(Paint.Align.CENTER);
paint.setTextSize(15);
base = BitmapFactory.decodeResource(resources, R.drawable.m1);
}
@Override
public ClusterOptions getClusterOptions(List<Marker> list) {
Bitmap bitmap = base.copy(Bitmap.Config.ARGB_8888, true);
Rect bounds = new Rect();
String text = String.valueOf(list.size());
paint.getTextBounds(text, 0, text.length(), bounds);
float x = bitmap.getWidth() / 2.0f;
float y = (bitmap.getHeight() - bounds.height()) / 2.0f - bounds.top;
Canvas canvas = new Canvas(bitmap);
canvas.drawText(text, x, y, paint);
BitmapDescriptor icon = BitmapDescriptorFactory.fromBitmap(bitmap);
return new ClusterOptions().anchor(0.5f, 0.5f).icon(icon);
}
}
关于Android-Maps-Extensions 异步加载标记图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32277467/
虽然我在 reactjs 组件(组件名称为 renderLocationLink)的渲染方法返回的 html 中包含了 a 标签的 onclick 处理程序,但渲染正确地发生了 onclick 处理程
我必须以 docx 格式存储一些文档,但无法忍受使用 msword:我想编辑某种纯文本标记,除了基于 XML 的东西(我也不喜欢那样)和从/到那个到/从 docx 转换。 有什么选择吗? 编辑:由于人
有一个页面,其 anchor 标记在延迟后变得可点击。我想使用用户脚本在可点击后点击它。 页面加载时,HTML 源代码为: Download 延迟一段时间后,#button 变
我正在将 XML 文件解析为 pandas 数据帧。使用下面的代码我可以成功获取所有内容,但是这使用了完整 XML 的编辑版本。完整的 XML 在主数据表之上有一堆摘要数据,请参阅完整的 XML he
目前我正在研究 xml.sax 解析器来解析 xml 文件 假设我有以下代码 filepath = 'users/file.xml' try: parser = xml.sax.make_pa
我正在尝试构建一种语法来解释用户输入的文本,搜索引擎风格。它将支持 AND、OR、NOT 和 ANDNOT bool 运算符。我几乎所有东西都在工作,但我想添加一个规则,将引用字符串之外的两个相邻关键
我遇到了 Terraform EKS 标记的问题,并且似乎没有找到可行的解决方案来在创建新集群时标记所有 VPC 子网。 提供一些上下文:我们有一个 AWS VPC,我们在其中将多个 EKS 集群部署
我是xpath的新手,对此了解不多。我知道有一种方法可以使用xpath在xml / xhtml文件中查找特定标签。就我而言,我试图找到第一个(a)链接元素。不幸的是,我的xpath字符串[// a [
我在索引页上的产品卡上遇到问题。在产品卡内部,我有 Vue 组件来渲染表单(数量和添加到购物车按钮)。当我单击“添加到购物车”按钮时,我得到了预期的结果。响应被发送到根 vue 组件,然后我看到产品已
html setMouse(true)} onMouseEnter={() => setMouse(false)} className='resume-container'> CSS .resum
我在组件中有一组枚举,如下所示: type TOption = (clVisible, clVisibleAlways, clRenderable, clEditable); TOptions
是否有出于性能考虑的javadoc标签? 人们可以想象: /** * ...other javadoc tags... * @perform Expected to run in O(n) tim
html setMouse(true)} onMouseEnter={() => setMouse(false)} className='resume-container'> CSS .resum
我有一个包含多个小子图的图。目标是当且仅当子图中的所有节点都是蓝色时,才将子图中的所有蓝色节点标记为红色。如果子图中的一个节点具有不同的颜色,绿色,那么我们将不会更改该子图中节点的颜色。 这是我正在使
我正在使用 json-ld 开发事件标记以包含在确认电子邮件中。 我的一些事件会定期重复发生。但是,最新的 Schema.org 规范不支持重复发生的事件,因此我遵循了此处提供的建议:http://l
我创建了一个插件,可以添加带有相应行号的标记。现在,这很棒,因为它现在显示在“标记” View 中。有没有办法当我双击标记上的一行时,它会转到标记指示的行? 谢谢。 最佳答案 双击“标记” View
是否有一个插件具有与 Facebook 标记类似的行为? 它的特别之处在于它具有: 在键入的单词之间自动完成 特殊输出的 html(与另一个输入字段同步) 最佳答案 您可以使用jquery提及输入pl
有没有更好的方法来读取java文件中的 token ?我目前正在使用 StringTokenizer 来分割 token 。但在大多数情况下,它的效率可能非常低,因为您必须逐个 token 地读取 t
我想知道是否有某种方法可以标记文件来识别该文件是否包含x。 考虑以下示例: 在批量转换过程中,我正在创建一个日志文件,其中列出了各个转换的成功/失败。 所以流程如下: 开始转换过程 创建名为batch
我一直在尝试模拟点击标签,但这并没有像我需要的那样工作。我的 anchor 标记看起来像这样 Download this pic 正常的 $("a").click() 或 trigger('cli
我是一名优秀的程序员,十分优秀!