Мозаичный форум  

Вернуться   Мозаичный форум > Территория общения > Персональные разделы > M.O.D.U.S.
Галерея Справка Пользователи Календарь Поиск Сообщения за день Все разделы прочитаны

M.O.D.U.S. Метафизика одиозного деконструктивизма услаждающих структур Персональный раздел Modus-а

Ответ
 
Опции темы
Старый 21.11.2010, 22:26   #1
Modus
дитя Ренессанса
 
Аватар для Modus
 
Регистрация: 29.05.2008
Сообщений: 2,346
Modus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастер
MapXtreme

Электронными картами мы занимаемся с начала 2009 года. Первый проект на базе MapXtreme делал один наш очень уважаемый сотрудник, которой в процессе работы всё время ругался на глючность этого продукта. Потом на карты переключилась одна строптивая студентка, которой я таким способом любезно предоставил возможность потешить своё ЧСВ. Она уже тогда удивлялась, почему её предшественник так возмущался: система работала вполне стабильно и предсказуемо.

После её увольнения картами занялся я. С того момента, когда я начал писать какой-то код для работы с картами MapInfo, прошло две недели. Ей-богу, гораздо больше проблем с WCF и DevExpress, что с MapXtreme. Да, содержательно карты сложнее, чем оболочки для баз данных, поэтому подводных камней больше. Но мне почему-то не хочется винить в этом Pitney Bowes. Они свою работу сделали нормально.

Я сразу же сделал то, чего руководство так и не смогло добиться от моих предшественников.

1. Вместо стандартного для MapInfo изменения масшаба по колесу мыши сделал ползунок.
2. Сделал так, чтобы данные, которые нужно динамически подкачивать с сервера и отображать на карте, подкачивались асинхронно, и программа не подвисала каждый раз, когда их требуется подгрузить.
3. Научился переопределять стандартный вид всплывающей подсказки на карте, в результате чего появилась возможность отображать в нём изображение, чего так хотел заказчик. Ещё это позволило избавиться от довольно медленной фазы массовой загрузки текстовых описаний географических объектов с сервера - теперь описание каждого объекта грузится при наведении мыши.
4. Сделал так, чтобы в режиме по умолчанию инструмент менялся динамически: при наведении на объект текущего слоя - выделение, при наведении на свободное место - перемещение карты.
__________________
Инструменты сердятся, когда на них не играют
Modus вне форума   Ответить с цитированием
Старый 27.11.2010, 00:57   #2
Modus
дитя Ренессанса
 
Аватар для Modus
 
Регистрация: 29.05.2008
Сообщений: 2,346
Modus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастер
Вот и я словил такую тему, что слой, на который нестандартным инструментом добавили объект, не перерисовывается. Мой предшественник по работе с MapXtreme это, как оказалось, так и не победил. Причём один слой перерисовывается, другой нет. Найдите 10 отличий, называется.

Удалось сделать костыль (перезагружать весь видимый прямоугольник карты), чтобы гарантированно перерисовывалось, но сервер жалко.

Пытаюсь эмулировать всё то, что делает загрузчик с картой, кроме обращений к серверу - не помогает. Найдите 10 отличий. В базе знаний на сайте Pitney Bowes никакой информации по теме. Предшественник говорит - в этом всё MapInfo.
__________________
Инструменты сердятся, когда на них не играют
Modus вне форума   Ответить с цитированием
Старый 27.11.2010, 02:27   #3
Modus
дитя Ренессанса
 
Аватар для Modus
 
Регистрация: 29.05.2008
Сообщений: 2,346
Modus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастер
Поговорил с уволившейся студенткой.

Она помогла мне найти ошибку. Просто задав правильный вопрос, чтобы я посмотрел в нужное место кода. Просто сервер у меня в одном месте ищет стиль по ID слоя, а не ID стиля. Для слоя, на котором оно работает, случайно оказалось так, что его ID совпадает с ID стиля этого слоя. А для других слоёв не совпадает.

Короче, банальная ошибка в бизнес-логике, и MapXtreme тут ни при чём.
__________________
Инструменты сердятся, когда на них не играют
Modus вне форума   Ответить с цитированием
Старый 15.12.2010, 00:51   #4
Modus
дитя Ренессанса
 
Аватар для Modus
 
Регистрация: 29.05.2008
Сообщений: 2,346
Modus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастер
И всё-таки документация у них - это нечто

Описание метода:

LineStyleRepository.Remove Method

Removes the first occurrence of a specific object from the collection.
Exceptions
System.NotSupportedException Thrown when using this method or property to modify the collection.

А вот что показывает Reflector:

public void Remove(object value)
{
throw new NotSupportedException();
}

Это "Removes the first occurrence of a specific object from the collection." явно было сгенерировано без участия человеческого интеллекта, по существующим описаниям базовых классов.

Мало того, что документация написана так, что требует проверки через Reflector, с точки зрения нормального стиля программирования на C# не поддерживаемые методы реализуемых интерфейсов принято реализовывать явно, чтобы наружу торчало только то, чем можно пользоваться. Это уже явный камень в огород Pitney Bowes.
__________________
Инструменты сердятся, когда на них не играют
Modus вне форума   Ответить с цитированием
Ответ

Метки
гис, программирование

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 15:08.