Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以用户身份放置多个覆盖_Java_Android_Google Maps_Android Maps_Overlays - Fatal编程技术网

Java 以用户身份放置多个覆盖

Java 以用户身份放置多个覆盖,java,android,google-maps,android-maps,overlays,Java,Android,Google Maps,Android Maps,Overlays,我一直在做一个项目,创建一个地图(使用谷歌api),用户可以在地图上使用longpress来放置自定义覆盖图。到目前为止,我已经能够允许用户放置一个覆盖,但当您放置第二个覆盖时,程序崩溃。我怀疑这是因为该方法试图重用相同的变量名?这是我正在使用的代码段,如果您能帮助我实现这一点,我们将不胜感激 @Override public void onLongPressFinished(MotionEvent e, ManagedOverlay overlay, GeoPoint point, Manag

我一直在做一个项目,创建一个地图(使用谷歌api),用户可以在地图上使用longpress来放置自定义覆盖图。到目前为止,我已经能够允许用户放置一个覆盖,但当您放置第二个覆盖时,程序崩溃。我怀疑这是因为该方法试图重用相同的变量名?这是我正在使用的代码段,如果您能帮助我实现这一点,我们将不胜感激

@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();
    }
}

请试试这个。这用于在地图视图上显示多个重叠,可能会解决问题:

要解决问题,我只需使用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();

请用语言标记