Suite

La couche de fond de carte disparaît à l'impression. N'arrive qu'avec le zoom max


Je suis assez nouveau sur arcgis, veuillez me supporter ici.

PUBLIER:

  • J'utilise esri.dijit.Print standard pour l'impression de cartes.
  • Le fond de carte s'affiche normalement dans le volet de ma carte à tous les niveaux de zoom.
  • La fonction d'impression fonctionne comme prévu pour tous sauf un niveau de zoom.
  • Lorsque la carte est zoomée au niveau maximum, le résultat de l'impression peut afficher des graphiques de chaque couche, à l'exception de la carte de base. Si seule la carte de base et une seule couche d'entités sont sélectionnées, le résultat affichera une carte pratiquement vide avec ces graphiques d'entités dessus.
  • Aucune erreur javascript et réussite de la réponse à la tâche.
  • essayé de comparer une demande d'impression réussie d'un autre niveau de zoom avec la demande ayant échoué, aucune différence significative à l'exception de l'étendue de la carte.

version lib : 3.10.

connecté via le réseau local

Demande : http://xx.xx.xx.xx/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task/execute

Partie de Web_Map_as_JSON : (notez que la couche "land" est en fait la carte de base à laquelle je faisais référence dans la question)

"mapOptions":{"showAttribution":true,"extent":{"xmin":829211.7728597418,"ymin":840643.6650277233,"xmax":829322.236622336,"ymax":840675.9442589484,"spatialReference":{"wkid":102140 ,"latestWkid":2326}},"spatialReference":{"wkid":102140,"latestWkid":2326}},"operationalLayers":[{"id":"land","title":"land", "opacity":1,"minScale":640000,"maxScale":1000,"url":"http://xxxx/MapServer"},{"id":"basemap","title":"basemap", "opacity":1,"minScale":0,"maxScale":0,"url":"http://xxxx/MapServer"}

User-Agent : Mozilla/5.0 (Windows NT 6.1 ; WOW64) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/47.0.2526.106 Safari/537.36

Quelqu'un a-t-il une idée par où commencer avec le débogage ?


Cela pourrait se produire pour plusieurs raisons.

  1. La couche "land" dans votre exemple json (ou une autre couche qui ne figure pas dans votre exemple) pourrait être dessinée au-dessus du fond de carte. La tâche d'impression ordonnera les calques en fonction de votre json. donc si la couche terrestre est d'abord dans les couches opérationnelles, elle s'appuiera sur toutes les autres couches (c'est comme être au sommet de la table des matières dans arcmap). Selon ce qu'il y a dans les couches au-dessus du fond de carte, ils pourraient le masquer. J'ai vu des couches qui fonctionnent bien dans arcmap ou en tant que service de carte sur une carte Web, mais lorsqu'elles sont envoyées au service d'impression, elles masquent tout en dessous.

    Vous pouvez tester cela assez rapidement en accédant à votre point de terminaison d'impression : http://xx.xx.xx.xx/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task/execute et en entrant le webmap json avec chaque couche mais la couche de fond de carte supprimée. Si vous obtenez une carte vierge, ce n'est probablement pas le problème.

  2. Stefan est peut-être sur la bonne voie à propos de votre connexion Internet. Ce n'est probablement pas ton connexion Internet, mais il peut s'agir du serveur d'impression. Plus précisément, il peut s'agir d'un problème de sécurité ou de proxy. Sans en savoir plus sur votre configuration, je ne peux pas en être sûr, mais le meilleur moyen de résoudre ce problème est de voir si vous pouvez exécuter la tâche d'impression à partir du serveur via arcmap.

    • Dans Arcmap 10, accédez à Boîtes à outils -> Boîtes à outils système -> Outils serveur -> Impression -> Exporter une carte Web

    • Dans la boîte de dialogue Exporter la carte Web, entrez votre carte Web json et d'autres paramètres et cliquez sur ok.

  3. à moins que la fenêtre de votre navigateur ne soit définie exactement sur les proportions du bloc de données dans le modèle d'impression, le service d'impression doit effectuer des ajustements à l'échelle de la carte ou à l'étendue. L'option preserveScale sur le modèle d'impression (template.preserveScale = true;) contrôle cela. Le paramètre par défaut pour cela est vrai, donc si vous ne le définissez pas explicitement sur false quelque part, ce n'est probablement pas votre problème.

Il existe de nombreux autres domaines potentiels à résoudre, mais ceux-ci devraient vous aider à démarrer.


J'ai eu le même problème et je l'ai résolu en définissant lehors d'échellepossibilité en association avecpréserverEchelledans leImprimer le modèlepour la tâche d'impression.

Après avoir envoyé plusieurs requêtes via l'interface REST "Exécuter une tâche (Exporter une tâche de carte Web)" et peaufiner "l'échelle" dans les options de la carte Web en tant qu'entrée JSON, cela ressemble à une échelle à moins de 0,001 de l'échelle maximale du fond de carte. le fond de carte vierge d'impression, donc un test rapide avec paramétragehors d'échelleobtenu le résultat souhaité - en essayant de définir l'échelle de la carte directement avant l'impression viaMap.setScalefait ne pas atteindre cela quand je l'ai essayé, ni nourrir le résultat descaleUtils.getExtentForScaleàMap.setExtentet ajouter les rappels différés pour déclencher l'exécution de la tâche d'impression.

Je voulais que cela s'applique à tout fond de carte que la carte pourrait utiliser, j'ai donc également ajouté un test pour voir si l'échelle de la carte est proche du fond de carte lors de la tentative d'impression. Exemple de code :

var template = new esri.tasks.PrintTemplate(); //… définir d'autres propriétés de modèle… // augmenter l'outScale à +1 du maxScale du fond de carte si l'échelle de la carte est proche var basemap = map.getLayer("layerIdOfYourBasemap"); if ((map.getScale() - basemap.maxScale) < 1) { template.outScale = basemap.maxScale + 1; template.preserveScale = true; }

Ce problème peut être lié à votre connexion Internet. Peut-être devez-vous attendre un peu plus longtemps pour que le fond de carte soit chargé ?

Une autre chose que vous pouvez faire est de déboguer votre page avec la console. Pour google chrome vous pouvez utiliser les instructions sur ce site : https://developers.google.com/web/tools/chrome-devtools/debug/console/console-ui?hl=en#opening-the-console