0

我一直在做一个项目来创建一个地图(使用googles api),用户可以在其中长按放置自定义叠加层。到目前为止,我已经能够允许用户放置一个叠加层,但是当您放置第二个时,程序会崩溃。我怀疑这是因为该方法试图重用相同的变量名?这是我正在使用的代码段,对于如何实现这一点的任何帮助将不胜感激。

@Override
public void onLongPressFinished(MotionEvent e, ManagedOverlay overlay, GeoPoint point, ManagedOverlayItem item) {                   
    if (item != null)
        Toast.makeText(getApplicationContext(), "You selected..." + item.getTitle() + "!", Toast.LENGTH_LONG).show();

        ManagedOverlay managedOverlay = overlayManager.createOverlay("listenerOverlay", getResources().getDrawable(R.drawable.tankicon));

        managedOverlay.createItem(point, "text");

        overlays.add(managedOverlay);
        overlayManager.populate();
    }
}
4

2 回答 2

0

请试试这个。这用于在地图视图上显示多个叠加层,可能会解决问题:https ://github.com/donnfelker/android-mapviewballoons

于 2011-05-24T06:23:47.127 回答
0

为了解决这个问题,我简单地使用了 onDoubleTap 方法而不是 longPress。longPress 被证明是有问题的,因为它可能会被误解,有时不起作用。

但是,大部分代码仍然相同。

@Override
public boolean onDoubleTap(MotionEvent e, ManagedOverlay overlay, GeoPoint point, ManagedOverlayItem item) {
    ManagedOverlay managedOverlay = overlayManager.createOverlay("Location", getResources().getDrawable(R.drawable.icon));

    managedOverlay.createItem(point, "place");
    overlays.add(managedOverlay);
    Toast.makeText(getApplicationContext(), "You selected " + managedOverlay.getName() + " !", Toast.LENGTH_LONG).show();
    overlayManager.populate();
于 2011-05-24T20:38:25.100 回答