Affichage marqueurs

Discussions sur l'API CUB

Affichage marqueurs

Messagepar connecthings » 29 Juillet 2019, 16:54

Bonjour,

En utilisant la librairie Leaflet ainsi que le GetCapabilities pour récupérer les paramètres WMTS,
je rencontre des problèmes pour afficher correctement les markers sur la carto.

En zoom 9 (0 à 9) les markers sont affichés au bon endroit.

Screen1.png

Lorsque je dé-zoom (ici zoom 8) les markers ne sont pas au bon endroit.

Screen2.png

Au zoom minimal (zoom 0) les markers sont complètement décalés par rapport à leur position
d'origine.

Screen3.png

J'utilise Proj4Leaflet pour changer de projection :

var crs = new L.Proj.CRS(
'EPSG:3945',
'+proj=lcc +lat_1=44.25 +lat_2=45.75 +lat_0=45 +lon_0=3 +x_0=1700000 +y_0=4200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',
{
transformation: new L.Transformation(1, 0, -1, 0),
resolutions: resolutions
}
);

Avec resolutions un tableau contenant le ScaleDenominator*0.00028 (la taille d'un pixel).

J'ai essayé de mettre des boundaries ainsi qu'une origine mais rien n'y fait.

Merci
Pièces jointes
screen1.png
screen1.png (204 Kio) Consulté 4107 fois
screen2.png
screen2.png (691.66 Kio) Consulté 4107 fois
screen3.png
screen3.png (364.72 Kio) Consulté 4107 fois
connecthings
 
Messages: 3
Inscrit le: 04 Juin 2019, 16:20

Re: Affichage marqueurs

Messagepar Sébastien Cart-Lamy » 29 Juillet 2019, 17:05

Bonjour,
C'est un problème de paramétrage sur votre leaflet.

A mon avis cela vient d'un mauvais calcul de la résolution des niveaux, car le standard WMTS utilise une résolution de 90.7 dpi (0.28mm par pixel...). Du coup, si les niveaux sont configurés en 96 dpi (ce qui est le cas de leaflet), ça décale tout.

Je crois qu'il faut utiliser la valeur ScaleDenominator (et non le Identifier) que renvoie le getCapabilities. Il faut essayer les deux.

J'ai déjà passé pas mal de temps sur le même type de problème... :?
Sébastien Cart-Lamy
Équipe OpenData
Équipe OpenData
 
Messages: 269
Inscrit le: 23 Juin 2011, 17:16

Re: Affichage marqueurs

Messagepar connecthings » 31 Juillet 2019, 14:59

Bonjour,

Merci pour ces informations.

J'ai effectivement essayé les calculs avec le ScaleDenominator et le Identifier mais j'ai toujours le
meme problème.

Voici la formule que j'ai trouvé pour l'initialisation de la résolution :

var inchesPerMeter = 39.3701; //nombre de pouce par metre
var dpi = 90.71446714322; //dpi WMTS

for(var i = 0; i < resolutions.length; i++){
resolutions[i] = scaleDenominator[i]/(dpi*inchesPerMeter);
}

scaleDenominator est le tableau contenant les valeurs de ScaleDenominator du GetCapabilities.

Avez vous d'autres formules de calculs de la résolution ?

Merci pour votre aide.
connecthings
 
Messages: 3
Inscrit le: 04 Juin 2019, 16:20

Re: Affichage marqueurs

Messagepar connecthings » 01 Août 2019, 12:04

Bonjour,

J'ai enfin trouvé une solution ! :D Au final, la formule de la résolution était bonne. Mon problème était le paramétrage de l'origin du CRS de proj4Leaflet. Je m'étais basé sur les coordonnées fournit par la projection EPSG:3945 (https://epsg.io/3945)

Il fallait en fait récupérer les coordonnées fournit par le GetCapabilities, celui du TopLeftCorner de la tileMatrix 250000.

Si ça peut aider quelqu'un voici le lien qui m'a mené sur la piste :
https://stackoverflow.com/questions/354 ... projection
connecthings
 
Messages: 3
Inscrit le: 04 Juin 2019, 16:20

Re: Affichage marqueurs

Messagepar Sébastien Cart-Lamy » 01 Août 2019, 17:04

Merci pour l'info !
Sébastien Cart-Lamy
Équipe OpenData
Équipe OpenData
 
Messages: 269
Inscrit le: 23 Juin 2011, 17:16


Retour vers API CUB

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité

cron