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();
    }
}
Другие вопросы по тегам