J'ai essayé cette question sur StackOverflow mais je n'ai obtenu aucune réponse. En espérant que vous puissiez tous aider.
Création d'une application de cartographie Web en Javascript / Dojo:
Lorsque je charge l'application dans un navigateur, elle charge les éléments html mais arrête ensuite le traitement. Je dois rafraîchir le navigateur pour qu'il charge le reste de la page et le javascript.
J'ai fait des tests et du débogage toute la journée et j'ai compris que j'avais mes fichiers JS externes au mauvais endroit (je suis une recrue). Correction de cela et l'application se charge très bien ... SAUF l'un de mes fichiers n'est pas lu correctement, ou pas du tout.
Lorsque je déplace le contenu du fichier JS externe en question vers le code principal par défaut, les fonctionnalités qu'ils contiennent fonctionnent correctement ... MAIS la carte nécessite à nouveau d'être actualisée.
Perplexe. Vous trouverez ci-dessous le code du fichier JS externe à l'origine de mon problème. Je ne peux pas comprendre pourquoi c'est un problème parce que les fonctions fonctionnent comme prévu quand ce n'est pas externe.
Toute aide est grandement appréciée.
//Toggles
function basemapToggle() {
basemaptoggler = new dojo.fx.Toggler({
node: "basemaptoggle",
showFunc : dojo.fx.wipeIn,
showDuration: 1000,
hideDuration: 1000,
hideFunc : dojo.fx.wipeOut
})
}
dojo.addOnLoad(basemapToggle);
function layerToggle() {
layertoggler = new dojo.fx.Toggler({
node: "layertoggle",
showFunc : dojo.fx.wipeIn,
showDuration: 750,
hideDuration: 750,
hideFunc : dojo.fx.wipeOut
})
}
dojo.addOnLoad(layerToggle);
function legendToggle() {
legendtoggler = new dojo.fx.Toggler({
node: "legendtoggle",
showFunc : dojo.fx.wipeIn,
hideFunc : dojo.fx.wipeOut
})
}
dojo.addOnLoad(legendToggle);
Voici la partie avant de mon code
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=7, IE=8, IE=9" />
<meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"/>
<title>
Zoning Classifications
</title>
<link rel="Stylesheet" href="ZoningClassifications.css" />
<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.0/js/dojo/dijit/themes/claro/claro.css">
<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.0/js/esri/dijit/css/Popup.css">
<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.0/js/dojo/dojox/grid/resources/Grid.css">
<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.0/js/dojo/dojox/grid/resources/claroGrid.css">
<style type="text/css">
</style>
<script src="JS/layers.js"></script>
<script src="JS/search.js"></script>
<script src="JS/basemapgallery.js"></script>
<script src="JS/identify.js"></script>
<script src="JS/toggles.js"></script>
<script type="text/javascript">
var djConfig = {
parseOnLoad: true
};
</script>
<script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=3.0"></script>
<script type="text/javascript">
dojo.require("dijit.dijit"); // optimize: load dijit layer
dojo.require("dijit.layout.BorderContainer");
dojo.require("dijit.layout.ContentPane");
dojo.require("esri.map");
dojo.require("dijit.TitlePane");
dojo.require("esri.dijit.BasemapGallery");
dojo.require("esri.arcgis.utils");
dojo.require("esri.tasks.locator");
dojo.require("esri.dijit.Legend");
dojo.require("esri.dijit.Popup");
dojo.require("dijit.form.Button");
dojo.require("dojo.fx");
dojo.require("dijit.Dialog");
dojo.require("dojo.ready");
dojo.require("dijit.TooltipDialog");
dojo.require("dojox.grid.DataGrid");
dojo.require("dojo.data.ItemFileReadStore");
dojo.require("esri.tasks.find");
EDIT 2 J'ai complètement réécrit l'application en plaçant tout le code (sauf le CSS) dans le fichier default.html principal. J'ai testé pièce par pièce pour m'assurer qu'il fonctionnait comme je le voulais. L'ajout du code bascule est le seul code qui le lance et provoque l'actualisation supplémentaire.
Donc, pour l'instant, j'utilise dijit.TitlePane pour contenir les éléments déroulants (galerie de fond de carte, couches, légende). Cependant, avec cela, vous ne pouvez pas changer l'apparence pour en faire des images, ce qui est mon objectif final.
Quelqu'un peut-il suggérer une alternative pour que je puisse utiliser 3 images différentes afin que lorsque vous cliquez sur l'image et que le menu déroulant s'ouvre, contenant la galerie de fond de carte, la liste des couches et la légende?