Я делаю приложение для Android с OpenStreetMaps (используя osmdroid). На этой карте показаны маркеры (долгота/широта и другие данные для этих маркеров извлекаются из файла json). Эти маркеры являются OverlayItems и все правильно отображаются в MapView. Координаты X и Y для этих растровых изображений вычисляются путем получения проекции карты, а затем из X и Y геоточки в сочетании с растровыми изображениями width/2 и height/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);
— это HashMap с парой Bitmap, OverlayItem. Позже в моем коде я перебираю ключи этого 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
}
Заранее спасибо.
a HashMap with Bitmap, OverlayItem pair.
. Разве вы не можете снова вычислить x, y из OverlayItem? Как и раньше. - person greenapps   schedule 17.02.2015