在 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);
有几点需要注意:
.setImagePath()
和 .setImageSize()
在最新的 SDK 中都是弃用的方法,尽管它们仍然是在上面的文档中引用。不确定这是否意味着通过绝对路径方法显示图像还有另一种选择,或者他们是否只是逐步淘汰此功能。
- 在我的特定示例中,我们使用紫色图钉显示注释,但该图钉的绝对路径文件名实际上称为
icon_greypin
。不过,其他 pin 图像文件名似乎已正确命名。
无论如何,在更新 SDK 之前,这是我的特定问题的解决方案,所以我将其标记为答案,希望它对其他人有所帮助!感谢 Ando 朝着正确的方向迈出了一步!
目前,我正在使用类似于以下的代码向地图视图添加注释列表:
// 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);
有几点需要注意:
和.setImagePath()
在最新的 SDK 中都是弃用的方法,尽管它们仍然是在上面的文档中引用。不确定这是否意味着通过绝对路径方法显示图像还有另一种选择,或者他们是否只是逐步淘汰此功能。.setImageSize()
- 在我的特定示例中,我们使用紫色图钉显示注释,但该图钉的绝对路径文件名实际上称为
icon_greypin
。不过,其他 pin 图像文件名似乎已正确命名。
无论如何,在更新 SDK 之前,这是我的特定问题的解决方案,所以我将其标记为答案,希望它对其他人有所帮助!感谢 Ando 朝着正确的方向迈出了一步!