в чем может быть проблема?

0 голосов
спросил 24 Март, 10 от Corvell (1,900 баллов) в категории Программные продукты Esri
silverlight, web

ищу улицу
FindTask findTask = new FindTask(Utility.CONST.pathService);
            findTask.ExecuteCompleted += FindTask_ExecuteCompleted;
            findTask.Failed += FindTask_Failed;
            FindParameters findParameters = new FindParameters();
           
            findParameters.LayerIds.Add(55);
            findParameters.SearchFields.Add("NAME");
            findParameters.ReturnGeometry = false;
            findParameters.SearchText = "Фабричный";
            findTask.ExecuteAsync(findParameters);

не находит, хотя в эта есть и если искать в таблице атрибутов, например в аркмапе, то находит, а если использовать findtask, не находит. вопрос, в чем может быть причина?

а если искать по ID, т.е поменять строчки
...
findParameters.SearchFields.Add("ID");
...
 findParameters.SearchText = "657";
...

то он находит, но не всегда

12 Ответы

0 голосов
ответил 24 Март, 10 от TDenis (42,620 баллов)
А QueryTask не пробовали, тоже не ищет?
0 голосов
ответил 24 Март, 10 от TDenis (42,620 баллов)
Вызывается метод ExecuteCompleted или Failed? Если второе, то какая ошибка?

API обновляете (на днях вышла 1.2)?
    
0 голосов
ответил 24 Март, 10 от Corvell (1,900 баллов)
Querytask не пробовал, сейчас попробую

вызывается ExecuteCompleted
0 голосов
ответил 24 Март, 10 от Corvell (1,900 баллов)
попробовал так
QueryTask queryt = new QueryTask(Utility.CONST.pathService + "/55");
            queryt.ExecuteCompleted += QueryTask_ExecuteCompleted;
            queryt.Failed += QueryTask_Failed;
            
            ESRI.ArcGIS.Client.Tasks.Query query = new ESRI.ArcGIS.Client.Tasks.Query();
            query.ReturnGeometry = true;
            query.Text = "Фабричный";
            query.OutFields.Add("*");
           
            queryt.ExecuteAsync(query);

выдает ошибку, что не хватает параметров для поиска, интересно каких, или я не так делаю?
0 голосов
ответил 24 Март, 10 от TDenis (42,620 баллов)
Да вроде всё правильно.

Можно вместо Text попробовать Where.
Проверить Utility.CONST.pathService.
Можно поглядеть в фидлере, отсылается ли что-нибудь и если да, то что именно.
И убедиться, что сервис позволяет запросы делать.
0 голосов
ответил 26 Март, 10 от Corvell (1,900 баллов)
text убрал, сделал так

query.OutFields.Add(Utility.CONST.nameStreet);
query.Where = Utility.CONST.nameStreet + " IS NOT NULL";

ищет, но только выводит 500 записей, а их на самом деле больше, это какое то ограничение? можно ли сделать больше?
0 голосов
ответил 26 Март, 10 от TDenis (42,620 баллов)
На сервере находите cfg-файл нужного сервиса в папке (по умолчанию):
%Program Files%\ArcGIS\server\user\cfg\
и меняете MaxRecordCount с 500 на другое число.

Но желательно стараться запроектировать приложение таким образом, чтобы не приходилось возвращать очень много записей. Особенно если это не просто какие-нибудь названия, а графические объекты. Могут быть серьёзные тормоза.
0 голосов
ответил 29 Март, 10 от Corvell (1,900 баллов)
не, не фурычит, поменял MaxRecordCount с 500 на другое число, которое надо. все равно выдает 500
0 голосов
ответил 29 Март, 10 от TDenis (42,620 баллов)
Сервис-то перезапустили?
0 голосов
ответил 29 Март, 10 от Corvell (1,900 баллов)
конечно)) даже несколько раз. Пока не буду разбираться с этим, т.к. решил сделать по другому.
спасибо.
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...