Estoy trabajando en una aplicación web flutter y estoy usando el widget GoogleMap. Hay varios modos de interacción (gestureHandling) que Google pone a disposición en la versión de JavaScript ( Interaction doc ).
Por defecto, el mapa está en modo "codicioso", pero cuando cambio el tamaño del navegador de Internet, entra en modo "cooperativo"... y en este momento, cuando quiero hacer zoom en mi mapa, tengo que mantener la tecla CTRL y no me gusta nada
Me muestra: "Use ctrl + scroll para hacer zoom en el mapa".
Entonces, en mi proyecto, quiero configurar el mapa en el modo de interacción "codicioso", pero el widget de GoogleMap no tiene ningún parámetro para hacerlo.
Encontré una solución alternativa que consiste en pasar por JavaScript para presionar programáticamente el botón CTRL cuando hay una acción de la rueda en el mapa.
<!-- In web/index.html --> <!-- ... --> <head> <!-- ... --> <script src="script.js" defer></script> <!-- ... --> </head> <!-- ... --> // In web/script.js function initScrollListener(id) { try { var map = document.getElementById('plugins.flutter.io/google_maps_' + id); map.addEventListener('wheel', wheelEvent, true); } catch (error) { console.error(error); } } function wheelEvent(event) { Object.defineProperty(event, 'ctrlKey', { value: true }); } // In lib/main.dart (or anywhere in your project) import 'dart:js' as js; import 'package:flutter/foundation.dart'; //... in my widget ...// @override Widget build(BuildContext context) { return GoogleMap( //...// onMapCreated: (GoogleMapController controller) { //Call the JavaScript function if(kIsWeb) js.context.callMethod('initScrollListener', [controller.mapId]); }, ); } //...//Funciona bastante bien, pero no estoy muy seguro de esta solución.
Ahora estoy tratando de encontrar una manera de recuperar la instancia de google.maps.Map e intento configurar manualmente el modo de interacción "codicioso".
Si tienes alguna sugerencia ^^ ¡Gracias!
Recursos Relacionados: