如何在android中解决这个叠加?

时间:2010-02-10 13:01:15

标签: android

我是Android GPS应用程序开发的新手。我必须在地图中显示多个位置,如果用户触摸任何一个位置,那么它应该显示有关该位置的信息。现在我的问题是我无法获得触摸事件中的确切位置。有没有办法在叠加层中获得图像的精确指向位置。

2 个答案:

答案 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;