我正在使用OpenStreetMaps创建一个Android应用程序(使用osmdroid)。 在此地图上,显示标记(从json文件中检索这些标记的长/纬度和其他数据)。这些标记是OverlayItems,并且都在MapView上正确显示。这些位图的X和Y坐标是通过获取地图视图的投影然后从地理位置的X和Y结合位图宽度/ 2和高度/ 2来计算的,位图是在他的正确位置上绘制的。世界地图。
长话短说:位图的X和Y值是动态计算的。 我的问题是,我正在编写用户在标记位图上点击(=触摸事件)时应该出现的代码。为此,我需要检查事件的X和Y是否在位图的范围内。 我怎么能这样做?
不幸的是,似乎并不是一个简单的bitmap.getX或.getY,这基本上就是我所需要的。
这是用于绘制位图的代码(发生在@Override draw()中),如果它可能有用:
for(OverlayItem p: waypointMarkers){
IGeoPoint in = p.getPoint();
Point out = new Point();
mapview.getProjection().toPixels(in, out);
Bitmap bm = BitmapFactory.decodeResource(getResources(),
R.drawable.marker);
bitmaps.put(bm, p);
canvas.drawBitmap(bm,
out.x - bm.getWidth()/2, //shift the bitmap center
out.y - bm.getHeight()/2, //shift the bitmap center
null);
}
bitmaps.put(bm, p);
是一个带有Bitmap,OverlayItem对的HashMap。稍后在我的代码中,我循环遍历此HashMap的键,我想在那里检查位图的X和Y.
for(Bitmap b: bitmaps.keySet()){
if (x >= xOfBitmap && x < (xOfBitmap + yourBitmap.getWidth())
&& y >= yOfBitmap && y < (yOfBitmap + yourBitmap.getHeight())) {
//found this on StackOverflow, if this is true than user has clicked somewhere on the bitmap
}
提前致谢。
答案 0 :(得分:0)