我想显示一个图像(包括滚动和缩放功能)。此外,我需要动态添加一些覆盖到图像。覆盖图与图像中的内容存在关系。
的相对位置
换句话说:我想实现一个带有一些标记的Map,但我提供了我自己的地图材料。
我的主要问题是:我如何做到这一点?
到目前为止我已经尝试过的
问题
对于我的问题,有没有简单的解决方案或方法?
在Android运行时添加和移动视图的正确方式是什么?(通常,我会使用基本布局并调整页边距-这是最佳实践吗?)
请谁告诉我怎么走好吗?
最小空气污染指数水平: 10
发布于 2016-01-07 21:40:07
经过很长一段时间,我找到了我的解决方案的确切答案:TileView
设置地图视图:
@Override
protected void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
TileView tileView = new TileView( this );
tileView.setSize( 2000, 3000 ); // the original size of the untiled image
tileView.addDetailLevel( 1f, "tile-%d-%d.png");
setContentView( tileView );
}
添加标记的:
tileView.addMarker( someView, 250, 500, -0.5f, -1.0f );
文档中的代码。
发布于 2013-01-02 14:09:21
我建议扩展View
类并覆盖onDraw
方法。看一看Canvas API。
您可能会有一个如下所示的onDraw方法:
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
canvas.translate(mPosX, mPosY); //position of your actual data
canvas.scale(mScaleFactor, mScaleFactor); // zoom factor
map.draw(canvas); //you draw your map here
canvas.restore(); //go back to saved state
//for each marker you have, do the same "save - translate - scale - draw" loop
}
因为你不需要你的标记是可缩放的,你可能不需要缩放步长,但是你需要正确地计算它们的位置。
根据你的对象数量等,你可能需要一种更优化的方式来绘制你的标记(例如,只重新绘制更改过的矩形区域)。请参阅View.invalidate(Rect)
发布于 2012-12-23 01:40:19
https://stackoverflow.com/questions/14004424
复制相似问题