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