Смешанные SKAnnotations customViews
У меня проблемы с повторным добавлением SKAnnotations на мою карту. Карта отображает 2 SKAnnotations из 2 городов Индии: Нью-Дели и Чандигарх (макет Нью-Дели содержит белый фон, в то время как Чандигарх - это просто новая RelativeLayout с TextView). После нескольких раундов удаления всех SKAnnotations и их повторного добавления пользовательские представления перепутаны. Вот как должна выглядеть карта:
И вот что может произойти после нескольких удалений и повторных добавлений:
Код для добавления аннотаций:
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.