Смешанные SKAnnotations customViews

У меня проблемы с повторным добавлением SKAnnotations на мою карту. Карта отображает 2 SKAnnotations из 2 городов Индии: Нью-Дели и Чандигарх (макет Нью-Дели содержит белый фон, в то время как Чандигарх - это просто новая RelativeLayout с TextView). После нескольких раундов удаления всех SKAnnotations и их повторного добавления пользовательские представления перепутаны. Вот как должна выглядеть карта:

2 Правильный customView для каждой аннотации

И вот что может произойти после нескольких удалений и повторных добавлений: введите описание изображения здесь

Код для добавления аннотаций:

public void addAnnotations() {
    SKAnnotation newDelhi = new SKAnnotation(444);
    newDelhi.setMininumZoomLevel(5);
    newDelhi.setAnnotationType(SKAnnotation.SK_ANNOTATION_TYPE_MARKER);
    SKAnnotationView newDelhiAnnotationView = new SKAnnotationView();
    RelativeLayout newDelhiCustomView =
            (RelativeLayout) ((LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(
                    R.layout.annotation_layout, null, false);
    newDelhiCustomView.setTag("new delhi");
    newDelhiAnnotationView.setView(newDelhiCustomView);
    newDelhi.setAnnotationView(newDelhiAnnotationView);
    TextView newDelhiTextView = (TextView) newDelhiAnnotationView.getView().findViewById(R.id.annotation_textview);
    newDelhiTextView.setText("New Delhi");
    SKCoordinate newDelhiLocation = new SKCoordinate(77.179163, 28.619828);
    newDelhi.setLocation(newDelhiLocation);

    SKAnnotation chandigarh = new SKAnnotation(555);
    chandigarh.setMininumZoomLevel(5);
    chandigarh.setAnnotationType(SKAnnotation.SK_ANNOTATION_TYPE_MARKER);
    SKAnnotationView chandigahrAnnotationView= new SKAnnotationView();
    RelativeLayout chandigarhCustomView =
            new RelativeLayout(getActivity());
    chandigarhCustomView.setTag("chandigarh");
    TextView chandigarhTextView = new TextView(getActivity());    
    chandigarhTextView.setText("Chandigarh");
    chandigarhCustomView.addView(chandigarhTextView);
    chandigahrAnnotationView.setView(chandigarhCustomView);
    chandigarh.setAnnotationView(chandigahrAnnotationView);
    SKCoordinate chandigarhLocation = new SKCoordinate(76.778867,30.736094);
    chandigarh.setLocation(chandigarhLocation);

    String nd = (String)newDelhiAnnotationView.getView().getTag();
    String ch = (String)chandigahrAnnotationView.getView().getTag();

    mapView.addAnnotation(newDelhi, SKAnimationSettings.ANIMATION_NONE);
    mapView.addAnnotation(chandigarh, SKAnimationSettings.ANIMATION_NONE);
}

удаление аннотаций по телефону:mapView.deleteAllAnnotationsAndCustomPOIs();

Я в недоумении после попытки решить эту проблему в течение недели, TIA

1 ответ

Решение

Это было проблемой в предыдущей версии SDK (<= 2.5.0, я думаю), где SDK неправильно управлял идентификаторами аннотаций (и, следовательно, иногда удалял неправильные аннотации).

В 2.5.1 это было исправлено (показано в примечаниях к выпуску) путем предоставления свойства uniqueID.

Другие вопросы по тегам