Skobbler Map(Android)中的自定义注释过多会使其无响应

时间:2017-04-14 08:21:29

标签: android annotations skmaps gpx skobbler-maps

我正在使用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()”为列表中的所有项目返回相同的值。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

我曾经遇到过这个问题。但是使用SDK 3.0.3(Skobbler团队的最新版本),我设法获得了加载的注释。但Android Monitor会出现警告。所以我将函数移动到AsyncTask,带有进度条。它效果更好。大约2秒钟?没有警告信息。