2017-10-13 8 views
0

En Mapbox, la méthode fitBounds ne semble pas bien fonctionner avec les points situés des deux côtés de l'Atlantique (d'où les coordonnées sautent de 359 à 0).Mapbox.js: définit les limites de carte sur une zone des deux côtés de la ligne de date

Comment est-il possible d'adapter les limites de l'Alaska ou un vol de HK à SF. Il est peut-être possible de coder une solution de contournement en utilisant un point central et un niveau de zoom personnalisé, mais cela donne l'impression d'être une solution de contournement trop simple pour contourner une mauvaise gestion des limites.

Si firBounds n'est d'aucune aide, y a-t-il une autre méthode comme celle-ci qui aboutirait à des résultats similaires?

Exemple de fitBounds autour de l'Alaska, depuis l'Alaska traverse la antiméridien:

map.fitBounds([[172.461667,71.365162],[-129.979511,51.214183]]) 

Répondre

0

Ces cas sont toujours un peu de douleur. Ce qui peut aider est envelopper votre boîte englobante coordonnées à l'aide:

https://www.mapbox.com/mapbox-gl-js/api/#lnglat#wrap

Une autre solution pourrait consister à convertir les limites à un centre & valeur de zoom à l'aide:

https://github.com/mapbox/geo-viewport

const {width, height} = map.getCanvas().getBoundingClientRect(); 
const viewport = geoViewport(
     [minX, minY, maxX, maxY], // the bounding box (west, south, east north) 
     [width, height], // map dimensions in pixel 
     0, // minzoom 
     22, // maxzoom 
     512 // tilesize for mapbox-gl-js 
    ); 
map.setCenter(viewport.center); 
map.setZoom(viewport.zoom) 
+0

Merci! C'est très utile! Je n'ai toujours pas réussi à obtenir les bons résultats d'une boîte englobante renvoyée par 'turf-extent', ou même en utilisant des coordonnées statiques sur la ligne de date; mais je suis certainement plus proche d'une solution de travail :) –

+0

Je n'ai pas été en mesure de mettre en œuvre une solution de travail avec cette approche. –