在 Android 上缩小时,Skobbler 注释从地图上消失

Skobbler Annotation disappears from map when zooming out on Android

目前,我正在使用类似于以下的代码向地图视图添加注释列表:

// Add to map view
SKAnnotation annotation = new SKAnnotation(i++);
annotation.getLocation().setLongitude(result.longitude);
annotation.getLocation().setLatitude(result.latitude);
annotation.setMininumZoomLevel(1);
annotation.setAnnotationType(SKAnnotation.SK_ANNOTATION_TYPE_PURPLE);
mapView.addAnnotation(annotation, SKAnimationSettings.ANIMATION_POP_OUT);

然而,每当我查看地图上的注释时,在我缩小到缩放级别 4.0 以下的任何内容后,它们就会消失。查看 Annotation class 的文档(以及在代码中确认),我看到默认缩放级别设置为 4,但似乎我对 .setMinimumZoomLevel 的调用被忽略。

是否有人了解正在发生的事情,或者这是否可能是 SDK 中的已知错误?

我在 Android 上使用 Skobbler 2.5。

感谢您对此事的任何帮助!

根据 Ando 对原始问题的评论并参考文档 here,我更新了代码以使用他描述的解决方法以允许注释显示到缩放级别 2。

原代码:

SKAnnotation annotation = new SKAnnotation(i++);
annotation.getLocation().setLongitude(result.longitude);
annotation.getLocation().setLatitude(result.latitude);
annotation.setMininumZoomLevel(1); // Note: this does not work
annotation.setAnnotationType(SKAnnotation.SK_ANNOTATION_TYPE_PURPLE);
mapView.addAnnotation(annotation, SKAnimationSettings.ANIMATION_POP_OUT);

更新代码:

SKAnnotation annotation = new SKAnnotation(i++);
annotation.getLocation().setLongitude(result.longitude);
annotation.getLocation().setLatitude(result.latitude);
annotation.setMininumZoomLevel(2);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
if (metrics.densityDpi < DisplayMetrics.DENSITY_HIGH) {
    annotation.setImagePath(SKMaps.getInstance().getMapInitSettings().
            getMapResourcesPath() + "/.Common/icon_greypin@2x.png");
    // set the size of the image in pixel
    annotation.setImageSize(128);
} else {
    annotation.setImagePath(SKMaps.getInstance().getMapInitSettings().
            getMapResourcesPath()+ "/.Common/icon_greypin@3x.png");
    // set the size of the image in pixels
    annotation.setImageSize(256);
}
mapView.addAnnotation(annotation, SKAnimationSettings.ANIMATION_POP_OUT);

有几点需要注意:

  1. .setImagePath().setImageSize() 在最新的 SDK 中都是弃用的方法,尽管它们仍然是在上面的文档中引用。不确定这是否意味着通过绝对路径方法显示图像还有另一种选择,或者他们是否只是逐步淘汰此功能。
  2. 在我的特定示例中,我们使用紫色图钉显示注释,但该图钉的绝对路径文件名实际上称为 icon_greypin。不过,其他 pin 图像文件名似乎已正确命名。

无论如何,在更新 SDK 之前,这是我的特定问题的解决方案,所以我将其标记为答案,希望它对其他人有所帮助!感谢 Ando 朝着正确的方向迈出了一步!