2016-11-17 1 views
1

Edit: Ich mein Problem sehen fand meine Antwort untenGoogle Maps API Gesten nicht funktioniert (Zoom drehen ...)

Original-Beitrag:
ich eine Tätigkeit erschaffe, die eine Karte enthält, aber ich kann keine Zoom- und andere Gestenfunktionen hinzufügen. Ich kann Hahn verdoppeln zu vergrößern, und ich kann das +/- Zeichen hinzufügen, um es zu vergrößern über

googleMap.getUiSettings().setAllGesturesEnabled(true); 

Dies ist mein Code:

Aktivität des xml (tracking_order.xml)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal"> 

<fragment 
    android:id="@+id/mapFragment" 
    class="com.example.OrderMapFragment" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="3" /> 

<FrameLayout 
    android:id="@+id/clientsFragment" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="1" /> 

OrderMapFragment.java

public class OrderMapFragment extends SupportMapFragment implements OnMapReadyCallback, GoogleMap.OnMarkerClickListener { 

    public static OrderMapFragment newInstance() { 
     OrderMapFragment fragment = new OrderMapFragment(); 
     Bundle args = new Bundle(); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
     ((OrderMapFragment.OnOrderMarkerClickListener) context).setMapObject(this); 
     getMapAsync(this); 
    } 

    @Override 
    public void onMapReady(final GoogleMap googleMap) { 
     googleMap.getUiSettings().setZoomControlsEnabled(true); //this one is working 
     googleMap.getUiSettings().setZoomGesturesEnabled(true); //not working 

     googleMap.getUiSettings().setAllGesturesEnabled(true); //not working 
     // ... (removed code used to fetch markers data) 
    } 

    @Override 
    public boolean onMarkerClick(Marker marker) { 
     return listener.filterListByMarker(marker); 
    } 

    public interface OnOrderMarkerClickListener { 
     /** 
     * Action to be taken when a marker has been clicked 
     * 
     * @param marker 
     * @return true if the listener has consumed the event (i.e., the default behavior should not occur); 
     * false otherwise (i.e., the default behavior should occur). 
     * The default behavior is for the camera to move to the marker and an info window to appear. 
     */ 
     boolean filterListByMarker(Marker marker); //the class that implements this doesn't do anything for now it just returns false 
    } 
} 

Danke

Antwort

2

fand ich endlich das Problem:
Die Aktivität enthält die mapFragment eine benutzerdefinierte Klasse wurde erstreckt. Diese Klasse hatte die folgende Methode außer Kraft gesetzt:

@Override 
public boolean dispatchTouchEvent(MotionEvent ev) { 
    if (ev.getAction() == MotionEvent.ACTION_UP) { 
     return super.dispatchTouchEvent(ev); 
    } 
    if (ev.getPointerCount() > 1) //here was the problem 
     return true; 
    return super.dispatchTouchEvent(ev); 
} 

so habe ich eine Methode und verändert es dazu:

@Override 
public boolean dispatchTouchEvent(MotionEvent ev) { 
    if (ev.getAction() == MotionEvent.ACTION_UP) { 
     return super.dispatchTouchEvent(ev); 
    } 
    if (ev.getPointerCount() > 1 && !enableMultiTouch()) 
     return true; 
    return super.dispatchTouchEvent(ev); 
} 

protected boolean enableMultiTouch(){ 
    return false; //and override it to true in my activity 
} 

Hoffe, dass es jemand hilft :)

1

Kommentar zur Linie

googleMap.getUiSettings().setZoomGesturesEnabled(true); //not working 

Jetzt versuchen Sie, wird es funktionieren. Wenn Sie irgendwelche besonderen oder wenige Gestures Mittel benötigen, ermöglichen durch separate sonst, wenn Sie brauchen alle rufen Sie einfach diese Zeile

googleMap.getUiSettings().setAllGesturesEnabled(true); 
+0

bei fi Zuerst habe ich es ohne eine der 3 Zeilen versucht. Dann habe ich es mit 'setZoomControlsEnabled' versucht, aber es war nicht das was ich brauchte, dann probierte ich es mit jedem der anderen getrennt und keiner arbeitete. Dann habe ich alle von ihnen gestellt und die Frage hier gestellt – PhpLou

0

In meinem Fall ist es zu setzen geholfen map.getUiSettings().setAllGesturesEnabled(true); und Lifecycle-Methoden außer Kraft setzen, wie in MapView documentation beschrieben:

@Override 
    public void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 
     mapView.onCreate(bundle); 
    } 

    @Override 
    public void onSaveInstanceState() 
    { 
     super.onSaveInstanceState(); 
     mapView.onSaveInstanceState(); 
    } 

    @Override 
    public void onPause() 
    { 
     super.onPause(); 
     mapView.onPause(); 
    } 

    @Override 
    public void onStart() 
    { 
     super.onStart(); 
     mapView.onStart(); 
    } 

    @Override 
    public void onResume() 
    { 
     super.onResume(); 
     mapView.onResume(); 
    } 

    @Override 
    public void onLowMemory() 
    { 
     super.onLowMemory(); 
     mapView.onLowMemory(); 
    } 

    @Override 
    public void onDestroy() 
    { 
     super.onDestroy(); 
     mapView.onDestroy(); 
    } 

    @Override 
    public void onStop() 
    { 
     super.onStop(); 
     mapView.onStop(); 
    } 
Verwandte Themen