Ich habe diese Frage bei StackOverflow ausprobiert, aber keine Antworten erhalten. Ich hoffe, Sie alle könnten helfen.
Erstellen einer Web-Mapping-Anwendung in Javascript / Dojo:
Wenn ich die App in einen Browser lade, werden die HTML-Elemente geladen, die Verarbeitung wird jedoch beendet. Ich muss den Browser aktualisieren, damit er den Rest der Seite und das Javascript lädt.
Ich habe den ganzen Tag getestet und debuggt und herausgefunden, dass ich meine externen JS-Dateien an der falschen Stelle hatte (ich bin ein Neuling). Das wurde behoben und die App wird großartig geladen ... AUSSER eine meiner Dateien wird nicht richtig oder überhaupt nicht gelesen.
Wenn ich den Inhalt der betreffenden externen JS-Datei standardmäßig in den Hauptcode verschiebe, funktioniert die darin enthaltene Funktionalität einwandfrei ... ABER die Karte muss erneut aktualisiert werden.
Verblüfft. Unten finden Sie den Code in der externen JS-Datei, der mein Problem verursacht. Ich kann nicht herausfinden, warum es ein Problem ist, weil die Funktionen wie erwartet funktionieren, wenn sie nicht extern sind.
Jede Hilfe wird sehr geschätzt.
//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);
Hier ist der vordere Teil meines Codes
<!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");
BEARBEITEN 2 Ich habe die App komplett neu geschrieben und den gesamten Code (außer dem CSS) in der Hauptdatei default.html platziert. Ich habe Stück für Stück getestet, um sicherzustellen, dass es so funktioniert, wie ich es will. Das Hinzufügen des Umschaltcodes ist der einzige Code, der ihn auslöst und die zusätzliche Aktualisierung verursacht.
Im Moment verwende ich dijit.TitlePane, um die Dropdown-Elemente (Grundkartengalerie, Ebenen, Legende) zu speichern. Damit kann man jedoch das Erscheinungsbild nicht ändern, um daraus Bilder zu machen, was mein Endziel ist.
Kann jemand eine Alternative vorschlagen, damit ich 3 verschiedene Bilder verwenden kann, sodass beim Klicken auf das Bild und das Dropdown-Menü die Grundkartengalerie, die Ebenenliste und die Legende geöffnet werden?