SKMaps в Android не отображает несколько аннотаций
Я хочу отобразить несколько аннотаций в SKMaps, но не могу показать более одной аннотации. Например, если я поставлю этот код:
SKAnnotation annotation = new SKAnnotation(0);
annotation.getLocation().setLongitude(-15.453439196571708);
annotation.getLocation().setLatitude(28.097941791638732);
annotation.setMininumZoomLevel(2);
annotation.setAnnotationType(SKAnnotation.SK_ANNOTATION_TYPE_RED);
mapView.addAnnotation(annotation, SKAnimationSettings.ANIMATION_POP_OUT);
Я вижу аннотацию на своей карте, но если я добавлю этот код для отображения нескольких аннотаций, я не смогу увидеть несколько аннотаций:
startPoint = currentPosition.getCoordinate();
viaPoints.clear();
viaPoints.add(new SKViaPoint(1, new SKCoordinate(28.097941791638732, -15.453439196571708)));
viaPoints.add(new SKViaPoint(2, new SKCoordinate(28.098324090242386, -15.454540411010385)));
viaPoints.add(new SKViaPoint(3, new SKCoordinate(28.097633169963956, -15.455050952732563)));
viaPoints.add(new SKViaPoint(4, new SKCoordinate(28.096485435962677, -15.455639194697142)));
destinationPoint = new SKCoordinate(28.10000809840858, -15.455355048179626);
for (SKViaPoint viaPointCurrent : viaPoints){
SKAnnotation annotation = new SKAnnotation(viaPointCurrent.getUniqueId());
annotation.getLocation().setLongitude(viaPointCurrent.getPosition().getLongitude());
annotation.getLocation().setLatitude(viaPointCurrent.getPosition().getLatitude());
annotation.setMininumZoomLevel(2);
annotation.setAnnotationType(SKAnnotation.SK_ANNOTATION_TYPE_MARKER);
mapView.addAnnotation(annotation, SKAnimationSettings.ANIMATION_POP_OUT);
}
В чем проблема? Кто-нибудь может мне помочь?
С уважением
1 ответ
Я только что попробовал следующий код внутри демонстрационного проекта (2.5.1), переопределяя пример "Аннотации", и все показывается, как и ожидалось:
/**
* Draws annotations on map
*/
private void prepareAnnotations() {
List<SKViaPoint> viaPoints = new ArrayList<SKViaPoint>();
viaPoints.add(new SKViaPoint(1, new SKCoordinate(28.097941791638732, -15.453439196571708)));
viaPoints.add(new SKViaPoint(2, new SKCoordinate(28.098324090242386, -15.454540411010385)));
viaPoints.add(new SKViaPoint(3, new SKCoordinate(28.097633169963956, -15.455050952732563)));
viaPoints.add(new SKViaPoint(4, new SKCoordinate(28.096485435962677, -15.455639194697142)));
//destinationPoint = new SKCoordinate(28.10000809840858, -15.455355048179626);
for (SKViaPoint viaPointCurrent : viaPoints) {
SKAnnotation annotation = new SKAnnotation(viaPointCurrent.getUniqueId());
annotation.getLocation().setLongitude(viaPointCurrent.getPosition().getLongitude());
annotation.getLocation().setLatitude(viaPointCurrent.getPosition().getLatitude());
annotation.setMininumZoomLevel(2);
annotation.setAnnotationType(SKAnnotation.SK_ANNOTATION_TYPE_MARKER);
mapView.addAnnotation(annotation, SKAnimationSettings.ANIMATION_POP_OUT);
}
// set map zoom level
mapView.setZoom(13);
// center map on a position
mapView.centerMapOnPosition(new SKCoordinate(28.097941791638732, -15.453439196571708));
}