Ich habe google map center beim Zoomen mit Doppeltippen und zum Zoomen drücken. Ich habe eine Lösung gefunden für Here, Dies ist nur für Doppel Tippen Sie auf Zoom-Lösung.Wie mache ich Google in der Mitte, wenn du doppelt tippst Klicke und drücke um zu zoomen in android?
TouchableWrapper
public class TouchableWrapper extends FrameLayout {
GestureDetectorCompat mGestureDetector;
public TouchableWrapper(Context context) {
super(context);
mGestureDetector = new GestureDetectorCompat(context, mGestureListener);
}
private final GestureDetector.SimpleOnGestureListener mGestureListener
= new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onDoubleTap(MotionEvent e) {
Log.e("GestureDetector", "Executed");
//Notify the event bus (I am using Otto eventbus of course) that you have just received a double-tap event on the map, inside the event bus event listener
EventBus_Singleton.getInstance().post(new EventBus_Poster("double_tapped_map"));
return true;
}
};
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
mGestureDetector.onTouchEvent(ev);
return super.onInterceptTouchEvent(ev);
}
}
Ich habe Otto für Event-Trigger verwendet.
public class EventBus_Singleton {
private static final Bus BUS = new Bus();
public static Bus getInstance() {
return BUS;
}
public EventBus_Singleton() {
}
public void post(String s) {
BUS.post(s);
}
}
EventBus_Poster
public class EventBus_Poster {
public final String string;
EventBus_Poster(String string) {
this.string = string;
}
}
In My Map-Aktivität habe ich Ereignis Empfangsverfahren verwendet Karte auf derselben Stelle zu vergrößern.
@Subscribe
public void EventBus_singleton(EventBus_Poster event) {
Log.e("EventBus_singleton", "Executed");
if (event != null && event.string.equals("double_tapped_map")) {
if (mapFragment != null) {
mapFragment.getMap().getUiSettings().setZoomGesturesEnabled(false);
mapFragment.getMap().getUiSettings().setRotateGesturesEnabled(false);
mapFragment.getMap().setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
LatLng lng = cameraPosition.target;
Log.e("LatLng", "" + lng);
}
});
mapFragment.getMap().animateCamera(CameraUpdateFactory.zoomIn(), 400, null);
}
}
}
Ich habe versucht, ScaleGestureDetector.SimpleOnScaleGestureListener
zu verwenden Prise Zoom zu machen, aber es hat nicht funktioniert und es auch irgendwann hinkt. Kann mir jemand helfen, Pinch Zoom in Google Map zu machen?
sind Sie Scrollen zu stoppen suchen? Dann können Sie UiSettings.setScrollGesturesEnabled (false) verwenden. – sachithkn
Ich möchte, dass die Karte in der Mitte bleibt, wenn ich sie zoome, im Normalfall, wenn wir sie zoomen, wird sie weggezogen. – Shvet
Zumindest kommentieren Sie, wenn Sie die Frage ablehnen und einen guten Grund dafür angeben. – Shvet