使用新版本的mapsforge 0.5.1,地图可以与onSensorChanged事件一起旋转。我在onLocationChanged事件的GPS点添加了自定义GPS位置标记。当地图旋转时,标记也会旋转以指向设备标题,就像在Google地图中一样,使用标记的绘图方法中的以下代码。
android.graphics.Canvas androidCanvas = AndroidGraphicFactory.getCanvas(canvas);
androidCanvas.save();
Float px = (float) canvas.getWidth()/2;
Float py = (float) canvas.getHeight()/2;
androidCanvas.rotate(degree, px, py);
canvas.drawBitmap(bitmap, left, top);
androidCanvas.restore();
然而,当拖动地图时,标记的位置会偏离GPS位置的前一个点。
如何计算px和py值,使标记保持在地图上GPS定位的精确位置,即使地图正在旋转,标记也指向设备标题。
答案 0 :(得分:1)
我知道它有点旧,但是对于未来的研究,我找到了一个解决方案:
if(canvasRectangle.intersects(bitmapRectangle)) {
canvas.drawBitmap(bitmap, left, top);
}
if(canvasRectangle.intersects(bitmapRectangle)) {
// Rotate the marker based on bearing for example (or whatever angle you want)
android.graphics.Canvas androidCanvas = AndroidGraphicFactory.getCanvas(canvas);
androidCanvas.save();
float px = (right + left) / 2f;
float py = (bottom + top) / 2f;
androidCanvas.rotate(bearing, px, py);
canvas.drawBitmap(bitmap, left, top);
androidCanvas.restore();
}
在我的情况下"承载"是我的类扩展标记的成员变量,我在代码(gps位置)之前的2个不同位置设置。您可以用任何适合您需要的角度更换它。