我是Android GPS应用程序开发的新手。我必须在地图中显示多个位置,如果用户触摸任何一个位置,那么它应该显示有关该位置的信息。现在我的问题是我无法获得触摸事件中的确切位置。有没有办法在叠加层中获得图像的精确指向位置。
答案 0 :(得分:0)
onTouchEvent的方法如下:
public boolean onTouchEvent(MotionEvent event, MapView mapView)
您可以使用以下内容检索点的位置:
Projection projection = mapView.getProjection();
GeoPoint g = projection.fromPixels((int)event.getX(),(int)event.getY());
修改强>
这只是一个想法。也许您可以查看ItemizedOverlay的文档,更具体地说
onTap(int index)
我猜你必须跟踪数组中的叠加层并使用索引检索相应的叠加项
答案 1 :(得分:0)
这样的事情对你有帮助吗?
如果你想获得lat和long,你可以使用GeoPoint tapPoint来获取它们。
private mapLocation getHitMapLocation(MapView mapView, GeoPoint tapPoint)
{
mapLocation hitMapLocation = null;
RectF hitTestRecr = new RectF();
Point screenCoords = new Point();
Iterator iterator = mapLocationViewer.getMapLocations().iterator();
while(iterator.hasNext()) {
mapLocation testLocation = iterator.next();
mapView.getProjection().toPixels(testLocation.getPoint(), screenCoords);
hitTestRecr.set(-bubbleIcon.getWidth()/2,-bubbleIcon.getHeight(),bubbleIcon.getWidth()/2,0);
hitTestRecr.offset(screenCoords.x,screenCoords.y);
mapView.getProjection().toPixels(tapPoint, screenCoords);
if (hitTestRecr.contains(screenCoords.x,screenCoords.y)) {
pLocation = testLocation;
break; }
}
return hitMapLocation;