Ich habe einen Basiskarten-Layer mit einem Feature-Layer aus Karten hinzugefügt. Eine Tabelle der Routen wird durch FeatureTable
generiert und die Farbe der Route wechselt von grün zu rot, wenn eine Route auf den Tisch oder auf die Karte geklickt wird. Mein Problem ist, dass die Route mit einem roten Umriss wieder grün wird, wenn ich mit der Karte ein- oder ausziehe. Wenn ich auf die Route klicke, wird sie wieder rot, aber ich brauche sie, um rot zu bleiben. Ich habe meinen Code unten gezeigt. Jede Hilfe wäre willkommen.Auswahlsymbol verschwindet, wenn die Karte gezoomt wird
var map, stateBaseMap, geometryLayer, routeFeature, routeDataFeature, myFeatureTable,
stateBaseMapUrl, geometryLayerUrl, routeFeatureUrl, routeDataFeatureUrl, routeChange;
require([ "esri/map",
"esri/layers/ArcGISDynamicMapServiceLayer",
"esri/layers/ArcGISTiledMapServiceLayer",
"esri/tasks/GeometryService",
"esri/layers/FeatureLayer",
"esri/dijit/FeatureTable",
"esri/symbols/SimpleLineSymbol",
"esri/Color",
"dijit/layout/ContentPane",
"dijit/layout/BorderContainer",
"esri/geometry/Extent",
"esri/graphicsUtils",
"esri/tasks/query",
"dojo/dom",
"dojo/parser",
"dojo/ready",
"dojo/on"],
function(Map,
ArcGISDynamicMapServiceLayer,
ArcGISTiledMapServiceLayer,
GeometryService,
FeatureLayer,
FeatureTable,
SimpleLineSymbol,
Color,
ContentPane,
BorderContainer,
Extent,
graphicsUtils,
Query,
dom,
parser,
ready,
on) {
parser.parse();
ready(function(){
esri.config.defaults.io.proxyUrl = "/llr/llrproxy";
esri.config.defaults.io.alwaysUseProxy = false;
esri.config.defaults.io.corsDetection = false;
stateBaseMapUrl = document.getElementById("shipment_stateBaseMapServiceURL").value;
geometryLayerUrl = document.getElementById("shipment_geometryServiceURL").value;
routeFeatureUrl = document.getElementById("shipment_routeLayerURL").value;
map = new Map("map");
stateBaseMap = new ArcGISTiledMapServiceLayer(stateBaseMapUrl);
map.addLayer(stateBaseMap);
geometryLayer = new GeometryService(geometryLayerUrl);
map.addLayer(geometryLayer);
routeFeature = new FeatureLayer(routeFeatureUrl, {
mode : FeatureLayer.MODE_ONDEMAND,
outFields : [ "*" ],
visible:true,
id : "routeFeature"
});
var selectionSymbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255,0,0]),6);
routeFeature.setSelectionSymbol(selectionSymbol);
map.addLayer(routeFeature);
on(routeFeature, "load", function(){
loadTable();
});
function loadTable(){
myFeatureTable = new FeatureTable({
featureLayer : routeFeature,
map : map,
editable: false,
showGridMenu:false,
gridOptions: {
selectionMode: "single"
},
editable: true,
fieldInfos: [
{
name: 'ROUTE_ID',
visible: false
},
{
name: 'ORIGIN',
alias: 'Entry State'
},
{
name: 'ROUTE_DESC',
alias: 'Route Description'
},
{
name: 'DESTNATION',
alias: 'Exit State'
}
],
menuFunctions: [
{ label: "Enter a new route.", callback: enterNewRoute }
]
}, 'myTableNode');
myFeatureTable.startup();
}
});
});
Ihr Beispiel zeigte mir das Problem, aber ich weiß nicht, wie ich es beheben soll. Das Auswahlsymbol wird zuerst geladen, und der Rest der Kartenebenen wird darüber geladen. Genau das passiert auf meiner Karte. Das rote Auswahlsymbol wird zuerst nach dem Zoom geladen und dann werden die grünen Routen darüber geladen. Das gleiche passiert mit Ihrem Beispiel. Verkleinern und der rote Raute wird zuerst nach dem Zoom angezeigt und die grünen Daten werden als nächstes angezeigt. Wenn Sie weit genug herauszoomen, wird der rote Diamant verdeckt. Gibt es eine Möglichkeit, die Anzeigereihenfolge umzukehren? – ponder275