Hi im working on application that need to show linear route(static).Im getting the route but i cant make it to zoom to routeExtent.Here is my code.
require([
"dojo/dom", "dojo/on",
"esri/tasks/query", "esri/tasks/QueryTask", "dojo/domReady!"
], function (dom, on, Query, QueryTask) {
var params = getUrlParams();
var kiosk = params['kiosk'];
var cel = params['cel'];
var lang = params['lang'];
queryTask = new esri.tasks.QueryTask("http://................................................................/MapServer/0");
var query = new Query();
query.returnGeometry = true;
query.outFields = [
"*"
];
var lang = 0;
if(location.href.indexOf("_alb") > -1)
lang =1;
else if (location.href.indexOf("_en") > -1)
lang =2;
if(lang == '0'){
queryTask = new esri.tasks.QueryTask("http://................................................................/MapServer/0 ");
}else if(lang == '1'){
queryTask = new esri.tasks.QueryTask("http://................................................................/MapServer/0 ");
}
else {
queryTask = new esri.tasks.QueryTask("http://................................................................/MapServer/0 ");
}
function executeRoute() {
var nameKiosk ;
if(kiosk == 1){
nameKiosk = 1;
}
if(kiosk == 2){
nameKiosk = 2;
}
if(lang == 0)
query.where = "OD = '"+nameKiosk+"' and DO = '"+ime_objekt.innerText+"'";
else if (lang == 1)
query.where = "OD_AL = '"+nameKiosk+"' and DO_AL = '"+ime_objekt.innerText+"'";
else
query.where = "OD_EN = '"+nameKiosk+"' and DO_EN = '"+ime_objekt.innerText+"'";
queryTask.execute(query, showResults);
return false;
}
function getUrlParams() {
var paramMap = {};
if (location.search.length == 0) {
return paramMap;
}
var parts = location.search.substring(1).split("&");
for (var i = 0; i < parts.length; i ++) {
var component = parts.split("=");
paramMap [decodeURIComponent(component[0])] = decodeURIComponent(component[1]);
}
return paramMap;
}
function showResults(results) {
var resultItems = [];
var resultCount = results.features.length;
var symbol = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([0, 255, 255]), 4);
for (var i = 0; i < resultCount; i++) {
var graphic = results.features;
graphic.setSymbol(symbol);
app.map.graphics.add(graphic);
var stateExtent = graphic.geometry.getExtent();
app.map.setExtent(stateExtent);
}
dom.byId("info").innerHTML = resultItems.join("");
console.log(resultItems.join(""));
}
});
Thanks
Derek,
I could see this working if the results had more than one feature in it. But the OP stated
The query always will show only 1 result
I am thinking a layout issue like thejus kambi
The only other thing I can think of is to make sure the spatial reference of the result feature is the same as the map.
Same.. The route dont get the extent.