我无法将SKAnnotations重新添加到地图中。 该地图显示了印度2个城市的2个SKAnnotations:新德里和昌迪加尔(新德里的布局包含白色背景,而昌迪加尔只是一个带有TextView的新RelativeLayout)。 在几轮删除所有SKAnnotations然后重新添加它们之后,customViews会混淆。这是地图的样子:
添加注释的代码:
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();
答案 0 :(得分:2)
这是以前版本的SDK(我认为< = 2.5.0)中的问题,其中SDK没有正确管理注释的ID(因此有时删除错误的注释)。
在2.5.1中,通过公开release notes属性修复了这个问题(显示在uniqueID中)。