android - Show FloorPlan and get Location with IndoorAtlas -


is there resource on how use indooratlas sdk?

i'm getting confused how show floorplan , getting current location.

please kindly me.

here's how:

1) initialize indooratlas instance:

indooratlas ia = indooratlasfactory.createindooratlas(context, listener, apikey, apisecret); 

2) obtain instance of floorplan:

futureresult<floorplan> result = ia.fetchfloorplan(floorplanid); result.setcallback(new resultcallback<floorplan>() {             @override             public void onresult(final floorplan result) {                 mfloorplan = result;                 loadfloorplanimage(result);             }             // handle error conditions } 

3) obtain actual image:

void loadfloorplanimage(floorplan floorplan) {   bitmapfactory.options options = createbitmapoptions(floorplan);   futureresult<bitmap> result = ia.fetchfloorplanimage(floorplan, options);   result.setcallback(new resultcallback<bitmap>() {             @override             public void onresult(final bitmap result) {                // have floor plan bitmap,                updateimageviewinuithread(result);             }             // handle error conditions   } } 

4) start positioning:

ia.startpositioning(venueid, floorid, floorplanid); 

5) show positions on floor plan:

public void onserviceupdate(servicestate state) {     // position on original floor plan image    int = state.getimagepoint().geti();    int j = state.getimagepoint().getj();     // take account how floor plan image has been scaled    // , draw position    pointf scaledpoint = new pointf();    util.calculatescaledpoint((int) floorplan.dimensions[0], (int) floorplan.dimensions[1], i, j, mimageview, scaledpoint);     drawnewpositioninuithread(scaledpoint.x, scaledpoint.y);  } 

of course can start positioning first , obtain image. cache image locally said, how.

util.java:

public class utils {       /**      * calculates scaling factor image original dimensions of      * {@code originalwidth x originalheight} being displayed {@code imageview}.      *      * assumption example code a) layout has been performed      * {@code imageview} , {@link android.widget.imageview.scaletype#center_inside} used.      *      * @param originalwidth  height of original bitmap displayed using {@code imageview}      * @param originalheight width of original bitmap displayed using {@code imageview}      */     public static float calculatescalefactor(int originalwidth, int originalheight,                                              imageview imageview) {          if (imageview.getscaletype() != imageview.scaletype.center_inside) {             throw new illegalargumentexception("only scale type of center_inside supported, was: "                     + imageview.getscaletype());         }          final int availablex = imageview.getwidth()                 - (imageview.getpaddingleft() + imageview.getpaddingright());         final int availabley = imageview.getheight()                 - (imageview.getpaddingtop() + imageview.getpaddingbottom());          if (originalwidth > availablex || originalheight > availabley) {             // original image not fit without scaling             return originalwidth > availablex                     ? availablex / (float) originalwidth                     : availabley / (float) originalheight;         } else {             return 1f; // no scaling required         }      }       /**      * calculates point draw coordinates {@code x} , {@code y} in bitmap that's      * original dimensions {@code originalwidth x originalheight} , may scaled down      * it's been displayed {@code imageview}.      *      * @param originalwidth  width of original bitmap before scaling      * @param originalheight height of original bitmap before scaling      * @param x              x-coordinate on original bitmap      * @param y              y-coordinate on original bitmap      * @param imageview      view used display bitmap      * @param point          point result value stored      * @see #calculatescalefactor(int, int, imageview)      */     public static void calculatescaledpoint(int originalwidth, int originalheight,                                             int x, int y,                                             imageview imageview,                                             pointf point) {           final float scale = calculatescalefactor(originalwidth, originalheight, imageview);         final float scaledwidth = originalwidth * scale;         final float scaledheight = originalheight * scale;          // when image inside view smaller view , image centered (assumption)         // there empty space around image (here offset)         final float offsetx = math.max(0, (imageview.getwidth() - scaledwidth) / 2);         final float offsety = math.max(0, (imageview.getheight() - scaledheight) / 2);          point.x = offsetx + (x * scale);         point.y = offsety + (y * scale);       }   }