Piloter la carte GEO sans la dérégler¶
✅ Pour recentrer sans changer le zoom, utilisez map.centerOn({ coordinates, crs }). Mesures faites sur GEO :
setExtent(emprise courante, crs, { disablePadding: true })ne restitue pas le zoom : largeur ×1,333 panneau fermé, ×1,5 panneau ouvert. Appelé à chaque changement de photo, il dézoomait de façon cumulative ;panTo(direction)décale d'un cran (nord, est…) et ignore sans rien dire des coordonnées ;-
centerOndéplace le centre exactement. Pour qu'un repère tombe au milieu de la zone visible quand un panneau masque une partie de la carte, décalez le centre visé vers l'est de(0,5 − f) × largeur, avecf = (100 − largeurPanneauEnPourcent) / 200. -
✅ Clic sur la carte :
geoApplication.map.on('pointerClick', callback). Convertissez les coordonnées en EPSG:4326 avecgeoApplication.transformsi le système de la carte est différent. Gardez le retour deon()et dewatch()et appelez.unsubscribe()à la fermeture. - ✅ Un événement peut arriver deux fois pour le même objet : dédoublonnez sur son identifiant.
- ✅ Si l'utilisateur doit tracer sur la carte GEO pendant qu'un panneau couvre une vue 3D, grisez la vue, bloquez son pointage et affichez « Cliquez sur la carte », avec un bouton annuler. Sans cela, il ne comprend pas où tracer.
- ✅ Cadrer une parcelle dans la partie visible de la carte :
setExtentde GEO applique ses propres marges de canvas et ne suit pas l'emprise qu'on lui donne (même échelle et même position avec trois emprises différentes, constaté sur GEO 4.5.0). Utilisez la vue OpenLayers native :view.fit(emprise, { size, padding: [20, recouvrement + 20, 20, 20], maxZoom: 20, duration: 300 }), avecrecouvrementmesuré sur la page (bord droit de la carte moins bord gauche du panneau ; 0 s'il est négatif ou couvre presque toute la carte). L'emprise doit être exprimée dans la projection de la vue. GardezsetExtenten repli, si la vue native n'est pas accessible. - ✅ En plein écran, le panneau recouvre toute la carte : sortez du plein écran puis attendez que le panneau ait retrouvé sa largeur (environ 0,5 s) avant de mesurer, sinon le recouvrement mesuré est absurde.