У меня есть поиск в центре карты Google, а масштабирование - с помощью двойного нажатия и увеличения для увеличения. Я нашел одно решение для Here, это только для двойного нажатия для увеличения.Как сделать Google в центре при использовании двойного нажатия и ущипнуть для увеличения андроида?
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);
}
}
Я использовал Otto для триггера событий.
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;
}
}
В моей карте деятельности я использовал метод события Прием для увеличения карты на том же месте.
@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);
}
}
}
Я пытался использовать ScaleGestureDetector.SimpleOnScaleGestureListener
сделать щепотку зум, но он не работал, а также когда-то он запаздывает. Может ли кто-нибудь помочь мне сделать масштабирование на карте google?
вы хотите остановить прокрутку? то вы можете использовать UiSettings.setScrollGesturesEnabled (false). – sachithkn
Я хочу, чтобы карта оставалась в центре, когда я масштабирую ее, в обычном режиме, когда мы увеличим ее, она утащит. – Shvet
По крайней мере, комментируйте, если у вас есть вопрос и дайте веские основания для этого. – Shvet