Suite

Valeur invalide pour l'attribut x = "NaN"


Je travaille sur une page jQuery Mobile avec une carte ESRI jsapi et une boîte de dialogue qui fait appel à un service de géocodage pour renvoyer un x/y sur lequel je place un graphique sur la carte, puis je le centre.

Ce site fonctionne très bien sur mon bureau… Cependant, au téléphone, les résultats ne remplissent pas la carte. J'ai utilisé les outils de débogage Chrome pour Android sur mon téléphone et ma tablette pour capturer l'erreur.

'Erreur : valeur non valide pour l'attribut x="NaN"…

La chose la plus folle est que la console et la montre me montrent que les valeurs de x et y sont correctes.

Y a-t-il un endroit différent de la géométrie du point pour le mobile dont j'ai besoin pour définir les coordonnées x et y ?

Andy…

var map = new Map('ui-map-content', { basemap: "topo", autoResize:false, center: [-96.7968380, 32.7762360], zoom: 12, slider: true }); //Oui, c'était un succès ('IknowwhereIam… )… function IknowwhereIam(data) { try { clearGraphics(map, pointGraphicLayer); var x, y; x = data.geométries[0].x; y = data.geométries[0].y; console.log("Je sais oùJe suis, x : " + x + ", y : " + y); var pt = new Point(x, y, map.spatialReference); var location = new Graphic(pt); console.log(emplacement); pointGraphicLayer.add(emplacement); map.centerAndZoom(pt, 16); } catch (e) { alert("problème dans la fonction 'IKnowwhereIam' : " + e.message); } finalement { } }


Eh bien… Ce fut une expérience d'apprentissage pour moi. 1st ne savait pas ce qu'était le svg.js (Scalable Vector Graphics) et la coordonnée que le code recherchait n'était pas une coordonnée spatiale que j'ai fournie mais une que les tuiles de fond de carte auraient fournies si j'avais attendu les informations à faire sur le réseau (sur le téléphone uniquement).

Alors…

J'ai introduit un délai d'une demi-seconde dans la fonction qui semble faire l'affaire. Je ne sais pas si c'est la meilleure façon de le faire ou non, mais cela fonctionne.

Andy

setTimeout(function () { map.centerAndZoom(pt, 16); }, 500);