以用户身份放置多个叠加层

问题描述

| 我一直在研究一个项目(使用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();
    }
}
    

解决方法

请试试这个。这用于在地图视图上显示多个叠加层,可能会解决问题:https://github.com/donnfelker/android-mapviewballoons     ,为了解决该问题,我只使用了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();