1

独自のMapListenerforPolygonsおよび for Markersinを実装し、要素やその他の色をNutiteq表示Toastsおよび変更できますが、マーカーまたはポリゴンを長くクリックしてもリスナーが反応しません。

私はすでにcustomListenerの外でRegisterContextMenu、ContextMenuListenerなどを試しましたが、同じでした。動作しません。

ContextMenu要素(マーカー/ポリゴン)を長くクリックすると、私の意図が表示されます。

コードは次のとおりです

メソッドを適切にオーバーライドしました

public class MyFieldEventListener extends MapListener {
    private GeometryLayer layer;
    private Marker clickMarker;
    private MapView mapView;
    private Activity activity;


public MyFieldEventListener(Activity activity, MapView mapView, GeometryLayer layer, Marker clickMarker) {
    this.layer       = layer;
    this.clickMarker = clickMarker;
    this.mapView     = mapView;
    this.activity    = activity;

    // I have also tried with this line commented and it's the same
    mapView.setLongClickable(true); 

    // here I register my ContextMenu
    activity.registerForContextMenu(mapView); 

    // Here I define my ContextMenuListener and create a ContextMenu 
    mapView.setOnCreateContextMenuListener( new View.OnCreateContextMenuListener() {

        @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
            Log.i("TAG", "WmsMapActivity:: setOnCreateContextMenuListener.onCreateContextMenu");
            menu.setHeaderTitle("Notes");

            menu.add(0, 1, 0, "Write Text Note");                   
        }
    } );        
}

@Override
public void onLabelClicked(VectorElement vectorElement, boolean longClick) {
    if (vectorElement.getLabel() != null) {
        if ( longClick )   
            mapView.showContextMenu();
        else { // Another Stuff... }
}

@Override
public void onVectorElementClicked(VectorElement vectorElement, double x, double y, boolean longClick) {
    if (vectorElement.getLabel() != null) {
        if (longclick)
            mapView.showContextMenu();
        else { // Another Stuff... }
    }       
}
...
}

コメント、アドバイスなど、毎回ありがとうございます

敬具

4

1 に答える 1

1

おそらく、コードのどこかで mapView.getOptions().setClickTypeDetection(false) を呼び出してクリック検出を無効にしていますか? 他のオプションは、クリック検出を妨げてはなりません。

そうでない場合は、Hellomap3D サンプルを試すことをお勧めします。表示されたマーカーをクリックすると、通常のクリックか「長い」クリックかを示すトーストが表示されます。私の電話では問題なく動作します。

于 2014-07-10T13:28:10.237 に答える