Skobbler Android - How To Set A Custom Image In An Annotation On A Map?
As indicated in the title, I try to put my own image in an annotation on a map. For this I use this code: annotation.setImagePath (mImagePath); annotation.setImageSize (4096); anno
Solution 1:
In 2.1.0 we've added support for using images from the resources bundle & extended the examples for full path images - here's the updated prepareAnnotations code:
Update: with 2.2.0 customView support was added:
/**
* Draws annotations on map
*/private void prepareAnnotations() {
// get the annotation objectSKAnnotation 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, SKAnimationSettings.ANIMATION_NONE);
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, SKAnimationSettings.ANIMATION_NONE);
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, SKAnimationSettings.ANIMATION_NONE);
// add an annotation with an image fileSKAnnotation annotation = new SKAnnotation();
annotation.setUniqueID(13);
annotation.setLocation(new SKCoordinate(-122.434516, 37.770712));
annotation.setMininumZoomLevel(5);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
if (metrics.densityDpi <DisplayMetrics.DENSITY_HIGH) {
// set the center point of the image - tapping on an annotation will// depend on// this value . Also the actual gps coordinates of the annotation// will// be in the center of the image.
annotation.getOffset().setX(16);
annotation.getOffset().setY(16);
annotation.setImagePath(SKMaps.getInstance().getMapInitSettings().getMapResourcesPath()
+"/.Common/poi_marker.png");
// set the size of the image in pixels
annotation.setImageSize(32);
} else {
// set the center point of the image - tapping on an annotation will// depend on// this value . Also the actual gps coordinates of the annotation// will// be in the center of the image.
annotation.getOffset().setX(32);
annotation.getOffset().setY(32);
annotation.setImagePath(SKMaps.getInstance().getMapInitSettings().getMapResourcesPath()
+"/.Common/poi_marker_retina.png");
// set the size of the image in pixels
annotation.setImageSize(64);
}
mapView.addAnnotation(annotation, SKAnimationSettings.ANIMATION_NONE);
// add an annotation with a drawable resourceSKAnnotation annotationDrawable = new SKAnnotation();
annotationDrawable.setUniqueID(14);
annotationDrawable.setLocation(new SKCoordinate(-122.437182, 37.777079));
annotationDrawable.setMininumZoomLevel(5);
// set the center point of the image - tapping on an annotation will// depend on// this value . Also the actual gps coordinates of the annotation will// be in the center of the image.
annotationDrawable.setOffset(new SKScreenPoint(64, 64));
SKAnnotationView annotationView = new SKAnnotationView();
annotationView.setDrawableResourceId(R.drawable.icon_map_popup_navigate);
// set the width and height of the image in pixels (they have to be// powers of 2)
annotationView.setWidth(128);
annotationView.setHeight(128);
annotationDrawable.setAnnotationView(annotationView);
mapView.addAnnotation(annotationDrawable, SKAnimationSettings.ANIMATION_NONE);
// // add an annotation with a viewSKAnnotation annotationFromView = new SKAnnotation();
annotationFromView.setUniqueID(15);
annotationFromView.setLocation(new SKCoordinate(-122.423573, 37.761349));
annotationFromView.setMininumZoomLevel(5);
annotationView = new SKAnnotationView();
// set view object to be displayed as annotation
annotationView.setView(customView);
annotationFromView.setAnnotationView(annotationView);
mapView.addAnnotation(annotationFromView, SKAnimationSettings.ANIMATION_NONE);
selectedAnnotation = annotation1;
// set map zoom level
mapView.setZoom(13);
// center map on a position
mapView.centerMapOnPosition(new SKCoordinate(-122.4200, 37.7765));
}
Post a Comment for "Skobbler Android - How To Set A Custom Image In An Annotation On A Map?"