在Android

时间:2015-08-31 22:28:47

标签: android skmaps

目前,我正在向mapview添加注释列表,其代码类似于以下内容:

// 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类的文档(以及代码中的确认),我发现默认缩放级别设置为4,但似乎忽略了对.setMinimumZoomLevel的调用。 / p>

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

我在Android上使用Skobbler 2.5。

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

1 个答案:

答案 0 :(得分:1)

根据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。看起来其他图钉图像文件名称的名称恰如其分。
  3. 无论如何,在更新SDK之前,这可以解决我的特定问题,因此我将其标记为答案,我希望它可以帮助其他人!感谢Ando迈出正确方向的一步!