- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为 osmdroid 实现我自己的 map 叠加层(但我认为它与 Google map 叠加层非常相似)。
我想做的是绘制一架飞机,根据方位旋转它并绘制一个速度矢量(在飞行方向上飞机前方的线显示它很快就会到达的位置)。
我的想法是,我在“面向北方”的 Canvas 上绘制飞机(等),然后根据飞行方向旋转它并将其与覆盖 Canvas “合并”(我尝试直接绘制到覆盖 Canvas ,但是在旋转时,它也在旋转 map )。
我已经创建了一个 Overlay 的子类并重写了 onDraw 方法,如下所示:
@Override
protected void draw(Canvas c, MapView mapView, boolean shadow) {
if (location != null) {
Point locPoint = new Point();
GeoPoint locGeoPoint = new GeoPoint(location);
final Projection pj = mapView.getProjection();
pj.toMapPixels(locGeoPoint, locPoint);
this.drawPlane(c, locPoint, location.getBearing());
}
}
private void drawPlane(Canvas cs, Point ctr, float bearing) {
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setAntiAlias(true);
Bitmap planeBM = Bitmap.createBitmap(cs.getWidth(), cs.getHeight(), Bitmap.Config.ARGB_8888);
planeBM.setDensity(cs.getDensity());
Canvas c = new Canvas(planeBM);
Rect r = new Rect();
//Point center = new Point(cs.getWidth() / 2, cs.getHeight() /2);
Point center = new Point(0, 0);
// Draw fuselage
r.left = center.x - PLANE_WIDTH / 2;
r.right = r.left + PLANE_WIDTH;
r.top = center.y - PLANE_SIZE / 3;
r.bottom = r.top + PLANE_SIZE;
c.drawRect(r, paint);
// Draw wing (REMOVED)
// Draw stabilizer (REMOVED)
// TODO Draw Speed vector
// "Merging" canvas
Matrix merge = new Matrix(cs.getMatrix());
//merge.setTranslate(0, 0);
//merge.setRotate(bearing, center.x, center.y);
cs.drawBitmap(planeBM, merge, paint);
cs.save();
}
基本上我的飞机从来没有出现过。
我假设这与初始 Canvas 中具有较大值的矩阵有关(我假设这些是某种地理坐标)。
虽然这一切似乎都是一致的(平面位置具有很大的值并且与矩阵一致)。
我已经尝试了很多事情:
我知道我的图像包含平面(至少如果我从 0,0 或新的 Canvas 中心绘制,因为我将它保存到 SD 以检查...
最佳答案
如果这对某人有用,我终于找到了解决方案。
基本上我试图同时做太多事情。在合并矩阵上使用 setPostRotate 而不是 setRotate 确实解决了这个问题(然后回到绘图板以获得正确的翻译参数)。
使用以下作为合并矩阵有效:
// "Merging" canvas
Matrix merge = new Matrix();
merge.setTranslate(loc.x - pCenter.x, loc.y - pCenter.y);
merge.postRotate(bearing, loc.x, loc.y);
关于android - osmdroid 的 map 覆盖从未出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7174182/
背景 我最近在 merge 期间遇到了一个意外未 merge 的文档文件的问题。 无论出于何种原因,我搞砸了 merge 并有效地删除了文件(和其他几个文件),因为我忘记了它们的存在。 现在我想查看我
我在我的网站上使用旧的 mysql 版本和 php 版本 4。 我的表结构: | orders_status_history_id | orders_id | orders_status_id |
我是一名优秀的程序员,十分优秀!