Skmap пользовательская аннотация первая загрузка удвоилась в размере
Я использую 32x32 и 64x64 (сетчатка) для одного значка. Когда я попытался использовать SKAnnotationView для отображения моего значка, он загружается в двойном размере (128x128). После того, как я очищаю аннотации и добавляю снова, размер возвращается к нормальному (64x64).
Пожалуйста, найдите код ниже, я следовал примеру кода проекта:
SKAnnotation annotation = new SKAnnotation();
annotation.setUniqueID(-1);
annotation.setLocation(new SKCoordinate(longitude.doubleValue(), latitude.doubleValue()));
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
SKAnnotationView annotationView = new SKAnnotationView();
if (metrics.densityDpi < DisplayMetrics.DENSITY_HIGH) {
annotationView.setDrawableResourceId(R.drawable.ic_annotation);
annotation.setOffset(new SKScreenPoint(16, 16));
annotationView.setWidth(32);
annotationView.setHeight(32);
annotation.setImageSize(32);
} else {
annotationView.setDrawableResourceId(R.drawable.ic_annotation_retina);
annotation.setOffset(new SKScreenPoint(32, 32));
annotationView.setWidth(64);
annotationView.setHeight(64);
annotation.setImageSize(64);
}
annotation.setAnnotationView(annotationView);
mapView.addAnnotation(annotation, SKAnimationSettings.ANIMATION_NONE);
1 ответ
Это может быть слишком поздно, но вы можете попробовать добавить аннотацию на
@Override
public void onSurfaceCreated() {
}
callback.
Это мой код:
public class OfflineMapFragment extends BaseFragment implements SKMapSurfaceListener {
private void addFilteredAnnotations(){
SKAnnotation annotation = new SKAnnotation();
annotation.setUniqueID(15);
annotation.setLocation(new SKCoordinate(Double.parseDouble(lat,long);
annotation.setMininumZoomLevel(5);
annotation.setOffset(new SKScreenPoint(128, 128));
SKAnnotationView annotationView = new SKAnnotationView();
annotationView.setDrawableResourceId(R.drawable.map_icon);
annotationView.setWidth(128);
annotationView.setHeight(128);
annotation.setAnnotationView(annotationView);
mapView.addAnnotation(annotation, SKAnimationSettings.ANIMATION_NONE);
}
@Override
public void onSurfaceCreated() {
addAnnotation();
}
}