2015-02-04 9 views
2

Я использую 32x32 и 64x64 (сетчатка) для того же значка. Когда я попытался использовать SKAnnotationView для отображения моего значка, он загружается в двойном размере (128x128). После очистки аннотаций и добавления снова размер возвращается к нормальному (64x64).Skmap пользовательская аннотация первая загрузка удваивается в размере

Вы можете найти код ниже, я последовал за образец кода проекта:

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); 
+0

Я могу обходным путем, удалив аннотацию и добавив еще раз: \t 'mapView.addAnnotation (аннотация , SKAnimationSettings.ANIMATION_NONE); . \t нового обработчика (Looper.getMainLooper()) postDelayed (новый Runnable() { \t \t @Override \t \t общественный недействительный запуск() { \t \t \t mapView.deleteAnnotation (-1); \t \t \t MapView .addAnnotation (аннотация, SKAnimationSettings.ANIMATION_NONE); \t \t} \t}, 500); ' –

+1

Мы ищем в этот вопрос (раскрытие: я работаю на Skobbler) – SylviA

+0

Может ли вы Ni cholas добавить демонстрационный проект, иллюстрирующий эту проблему? – SylviA

ответ

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(); 
    } 
} 
+0

. Я больше не работаю над этим проектом. Надеюсь, что другие люди считают это полезным! –

 Смежные вопросы

  • Нет связанных вопросов^_^