我正在使用Skobbler Map开发Android应用程序。
在我的应用中,我想显示大量自定义注释(png引脚)。注释的数量超过500,并且引脚图像在不同情况下会发生变化。我可以添加自定义注释,但应用程序在注释呈现时至少10秒没有响应(请注意添加注释只需不到一秒钟,但渲染大约需要10秒 - 手机有3GB RAM) 。
以下是相关代码
private void addAnnotations(List<Item> itemList) {
for (Item item : itemList) {
int itemId = item.getItemId();
SKAnnotation annotation = new SKAnnotation(itemId);
annotation.setLocation(new SKCoordinate(item.getLatitude(), item.getLongitude()));
//annotation.setAnnotationType(SKAnnotation.SK_ANNOTATION_TYPE_RED);
SKAnnotationView annotationView = new SKAnnotationView();
RelativeLayout customView = (RelativeLayout) ((LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(
R.layout.layout_custom_pin, null, false);
annotationView.setView(customView);
annotationView.setReuseIdentifierWithId("cat." + item.getCategoryId());
annotation.setAnnotationView(annotationView);
mapView.addAnnotation(annotation, SKAnimationSettings.ANIMATION_NONE);
}
}
如果我最初在上面的代码中创建'customView'并将其存储在成员变量中并重复使用它,那么结果也是一样的。
另请注意,如果我通过使用预定义的注释类型调用setAnnotationType来使用普通引脚,则速度非常快。 Skobbler建议使用setReuseIdentifierWithId与我做的相同的id,我不知道如何以及在何处使用该方法。请注意,在我的情况下,“item.getCategoryId()”为列表中的所有项目返回相同的值。
有人可以帮忙吗?
答案 0 :(得分:1)
我曾经遇到过这个问题。但是使用SDK 3.0.3(Skobbler团队的最新版本),我设法获得了加载的注释。但Android Monitor会出现警告。所以我将函数移动到AsyncTask,带有进度条。它效果更好。大约2秒钟?没有警告信息。