2014-06-25 10 views
4

Я пытаюсь настроить пользовательские аннотации изображений в Android SDK, и я не могу. Если я создаю аннотацию с изображением по умолчанию с кодом: отображаетсяПочему пользовательские аннотации не отображаются?

annotation.setAnnotationType(SKAnnotation.SK_ANNOTATION_TYPE_GREEN); 

аннотаций. Но когда я установил свое собственное изображение с кодом:

annotation.setImagePath(getActivity().getFilesDir() + "/" + data.getMapImagePath()); 
annotation.setImageSize(64); 

Аннотация не отображается. Переменные в пути изображения разрешены (например): "/data/data/com.kolobee.mini/files/stings_chueca.me9d_map.png".

Это изображения генерируются динамически приложением путем создания png файла из Bitmap с кодом:

FileOutputStream fos = context.openFileOutput(path, Context.MODE_PRIVATE); 
bitmap.compress(CompressFormat.PNG, 75, fos); 
fos.close(); 

Почему аннотаций не отображаются?

+0

Пользовательские изображения не работает на моей стороне слишком. Это изображение, которое я использую: cl.ly/image/0l0T2n1B3O07 (Photoshop создан, 64x64, 24-битный прозрачный PNG) SKAnnotation * annotation = [аннотации SKAnnation]; // set unique ID // set location annotation.imagePath = [[NSBundle mainBundle] pathForResource: @ "purpleAlert" ofType: @ "png"]; [self.mapView addAnnotation: аннотация]; Не повезло. Ничего не отображается. –

ответ

0

В 2.1.0 мы добавили поддержку для использования изображений из пакета ресурсов & расширить примеры для полных изображений пути - вот обновленный prepareAnnotations код:

/** 
* Draws annotations on map 
*/ 
private void prepareAnnotations() { 

    // get the annotation object 
    SKAnnotation annotation1 = new SKAnnotation(); 
    // set unique id used for rendering the annotation 
    annotation1.setUniqueID(10); 
    // set annotation location 
    annotation1.setLocation(new SKCoordinate(-122.4200, 37.7765)); 
    // set minimum zoom level at which the annotation should be visible 
    annotation1.setMininumZoomLevel(5); 
    // set the annotation's type 
    annotation1.setAnnotationType(SKAnnotation.SK_ANNOTATION_TYPE_RED); 
    // render annotation on map 
    mapView.addAnnotation(annotation1); 

    SKAnnotation annotation2 = new SKAnnotation(); 
    annotation2.setUniqueID(11); 
    annotation2.setLocation(new SKCoordinate(-122.410338, 37.769193)); 
    annotation2.setMininumZoomLevel(5); 
    annotation2.setAnnotationType(SKAnnotation.SK_ANNOTATION_TYPE_GREEN); 
    mapView.addAnnotation(annotation2); 

    SKAnnotation annotation3 = new SKAnnotation(); 
    annotation3.setUniqueID(12); 
    annotation3.setLocation(new SKCoordinate(-122.430337, 37.779776)); 
    annotation3.setMininumZoomLevel(5); 
    annotation3.setAnnotationType(SKAnnotation.SK_ANNOTATION_TYPE_BLUE); 
    mapView.addAnnotation(annotation3); 

    // annotation drawn with drawable resource 
    SKAnnotation annotation4 = new SKAnnotation(); 
    annotation4.setUniqueID(13); 
    annotation4.setLocation(new SKCoordinate(-122.425, 37.774)); 
    annotation4.setMininumZoomLevel(5); 
    SKAnnotationView annotationView = new SKAnnotationView(); 
    // set the drawable resource to be rendered as annotation 
    annotationView.setDrawableResourceId(R.drawable.dot_full); 
    // set the size of the annotation (this value must be a power of 2) 
    annotationView.setProperSize(16); 
    annotation4.setAnnotationView(annotationView); 
    mapView.addAnnotation(annotation4); 

    // annotation drawn with image from a local file 
    SKAnnotation annotation5 = new SKAnnotation(); 
    annotation5.setUniqueID(14); 
    annotation5.setLocation(new SKCoordinate(-122.417, 37.772)); 
    annotation5.setMininumZoomLevel(5); 

    // set path to an image whose dimensions are powers of 2 
    // image is selected according to screen density 
    DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    if (metrics.densityDpi < DisplayMetrics.DENSITY_HIGH) { 
     annotation5.setImagePath(app.getMapResourcesDirPath() + "images/dot_blue_medium.png"); 
    } else { 
     annotation5.setImagePath(app.getMapResourcesDirPath() + "images/dot_blue_high.png"); 
    } 
    annotation5.setImageSize(40); 
    mapView.addAnnotation(annotation5); 

    selectedAnnotation = annotation1; 
    // set map zoom level 
    mapView.setZoom(14); 
    // center map on a position 
    mapView.centerMapOnPosition(new SKCoordinate(-122.4200, 37.7765)); 
    updatePopupPosition(); 
} 
+0

Я обновлю SDK и проверю, разрешена ли проблема. Благодаря :) – eliocs