在不同方法中绘制圆是否有任何可能性。这是一步:
所以这就是代码:
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) {
}
});
}
直到我成功使用位图在UI线程中绘制平面图。接下来我想绘制蓝色圆圈以获得不同方法的当前位置。它的:
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状态)在电话移动时给予响应。
有人可以提供帮助吗?
答案 0 :(得分: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)绘制蓝点(使用上面引用的数学)。您可以绘制一个半透明圆圈以获得精确度(较大的半径)和一个圆圈用于实际的蓝点。