2015-05-18 5 views
0

Есть ли возможности рисовать круг в другом методе. Вот этот шаг:Рисовать круг внутри растрового изображения другим способом

  1. В методе onCreate я вызываю метод loadFloorPlanImage(); < --- это с использованием растрового изображения, чтобы составить план этажей, который можно получить от IndoorAtlas.
  2. Далее я хочу нарисовать круг внутри loadFloorPlanImage метод в другой способ.

Так это код:

public onCreate(Bundle savedInstanceState) 
{ 
initIndoorAtlas(); <-- cobtain connection with IndoorAtlas. 
} 

Внутри initIndoorAtlas(); Существует вызов loadFloorPlan(); метод.

public void loadFloorPlanImage(FloorPlan floorPlan) { 
    BitmapFactory.Options options = createBitmapOptions(floorPlan); 
    FutureResult<Bitmap> result = mIndoorAtlas.fetchFloorPlanImage(floorPlan,options); 
    result.setCallback(new ResultCallback<Bitmap>() { 
     @Override 
     public void onResult(final Bitmap result) { 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        ImageView imageView = (ImageView) findViewById(R.id.imageView); 
        imageView.setImageBitmap(result); 
        log("oNResult LoadFloorPlanImage"); 
       } 
      }); 
     } 
     @Override 
     public void onSystemError(IOException e) { 

     } 

     @Override 
     public void onApplicationError(IndoorAtlasException e) { 

     } 
    }); 
} 

До этого я был заинтересован в том, чтобы нарисовать план этажа в потоке пользовательского интерфейса, используя растровое изображение. Затем я хочу нарисовать синий круг, чтобы получить текущее местоположение в другом методе. Это:

public void onServiceUpdate(ServiceState state){ 
    final double x,y; 
    int i,j; 
    x = state.getMetricPoint().getX(); 
    y = state.getMetricPoint().getY(); 
    i = state.getImagePoint().getI(); 
    j = state.getImagePoint().getJ(); 

//here is to draw circle based on i,j pixel. 
} 

Обратите внимание, что onServiceUpdate (ServiceState состояние) дает RESPONS, когда телефон находится в движении.

Есть ли кто-нибудь может помочь?

+0

Думаю, мне нужно больше деталей о том, что вы должны делать с растровым изображением. Недостаточно «от другого метода». Это какой-то код обновления поверхности? – eduyayo

+0

Эта функция приложения предназначена для определения местоположения устройства внутри здания. Он использует intraatlas SDK. Первый растровый рисунок вызывает изображение плана этажа из облачного пространства (LoadFloorPlanImage). Далее в onServiceUpdate автоматически генерируется код, когда устройство движется. И то, что я хочу, это рисовать круг, когда onServiceUpdate делает что-то. Это похоже на голубую точку на картах Google. –

ответ

0

См. Основную математику для расчета правильного положения в другом вопросе: Draw Circle in ImageView when getting current location IndoorAtlas SDK.

Чтобы нарисовать позицию, сохраните последнее местоположение, возвращенное с сервера, вызовите invalidate в ImageView, который вы использовали для отображения растрового изображения этажа, переопределите его onDraw (Canvas), сначала вызовите super.onDraw (canvas) затем нарисуйте синюю точку (используя математику, как указано выше) с https://developer.android.com/reference/android/graphics/Canvas.html#drawCircle(float, float, float, android.graphics.Paint). Вы можете нарисовать один полупрозрачный круг для точности (большой радиус) и одного круга для фактической голубой точки.

Смежные вопросы