将多个叠加层设置为用户

时间:2011-05-23 14:01:42

标签: java android google-maps android-maps overlays

我一直在创建一个项目来创建一个地图(使用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();
    }
}

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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();