Je développe sur Google Maps depuis un certain temps et je passe à OpenLayers mais je suis coincé sur un point: je dessine des vecteurs qui sont principalement circulaires mais impliquent également une géométrie personnalisée, donc je ne peux pas utiliser createRegularPolygon. Je crée un tableau de points et je l'envoie à un objet OpenLayers.Layer.Vector. Cela fonctionne très bien, mais les «cercles» qui en résultent ne sont ronds que près de l'équateur, pas aux latitudes plus élevées. Ils sont écrasés à peu près autant que le fond de carte à des latitudes plus élevées, ce qui semble logique. Si j'utilise Google comme couche de base, ils ont la forme correcte sous toutes les latitudes, mais je crée une solution mobile hors ligne pour que cela ne fonctionne pas.
Qu'est-ce que j'utilise pour une couche de base (ou quels paramètres définir) pour que ma géométrie reste ronde à toutes les latitudes sans utiliser Google ou des cartes en ligne?
Il n'existe pas de carte de la terre entière dans laquelle tous les cercles (vrais, sphériques) restent vraiment ronds. Cependant, il existe des moyens de cartographier la terre dans lesquels presque tous les cercles suffisamment petits sont ronds. Ceux-ci sont basés sur des projections conformes . Par définition, les changements qu'une projection conforme fait aux distances dans de petites zones sont de deux types seulement: un étirement uniforme et une rotation. De toute évidence, ces changements ne rendent pas les cercles moins ronds.
Carte de la terre avec une projection épicycloïdale d'août . La plupart des cercles apparaîtront vraiment ronds sur cette carte.
Les projections conformes couramment utilisées sont le Mercator (une projection cylindrique), la stéréographie (une projection azimutale) et la conique conforme de Lambert (une projection conique, évidemment). Celles-ci couvrent les trois grandes familles de projections, vous donnant la possibilité de choisir un "look" particulier pour le réticule des méridiens et des lignes de latitude. Des options supplémentaires, qui peuvent être disponibles dans certains SIG, incluent la stéréographie oblique Miller , Littrow , la conique conique oblique bipolaire , Lagrange , Eisenlohr , août épicycloïdal , Guyou , Peirce Quincuncial, GS50 , diverses projections Adams et Lee . (Source: Snyder & Voxland, An Album of Map Projections. USGS Professional Paper 1453.) Ces deux derniers indiquent la richesse des projections conformes possibles qui peuvent être créées et montrent comment les projections conformes ne sont pas vraiment "préservant la forme": les projections Adams cartographient conformément la carte un hémisphère en carré et la projection de Lee le place en triangle. En fait, le théorème de cartographie de Riemann de l'analyse complexe montre que vous pouvez cartographier de manière conforme un hémisphère dans n'importe quel polygone que ce soit!
OpenLayers utilise la bibliothèque de projection Proj4js . Le code source des projections est distribué dans le dossier / proj4js / lib / projCode /. Les projections conformes incluses dans la dernière version (1.0.2) sont le Mercator , deux Transverse Mercators , deux obliques Mercators ("Hotine" et "Swiss Oblique"), Lambert Conformal Conic et Stereographic .
À moins que votre application ne soit conçue pour fonctionner dans le monde entier, explorez et étudiez ces options pour déterminer celle qui conviendrait le mieux à votre région d'intérêt . Tous ces éléments peuvent être facilement recentrés et redimensionnés pour minimiser la distorsion totale (non seulement des formes, mais aussi des zones et des distances) dans une zone spécifique. La solution mondiale par défaut est une variante du Mercator, popularisée par Google maps.
la source
Eh bien, évidemment, vous aurez un problème tant que vous utilisez le fond de carte dans la projection EPSG: 4326. Ce dont vous avez besoin est une projection Spherical Mercator qui, comme vous l'avez remarqué, est Google Maps et d'autres fournisseurs de cartes commerciaux. Allez-y et lisez ceci pour mieux comprendre ce problème.
Pour vous, la solution mobile hors ligne OpenStreetMap serait probablement une bonne solution.
la source