Сегодня
обнаружился любопытный эффект (даже не
столько любопытный, сколько поганенький,
и не эффект а дефект).
Есть
такой вьювер для карт — ArcGIS
Viewer for Silverlight (вот ненавижу такие
названия, должен быть короткий и удобный
коденейм). Красивый, местами удобный,
расширяемый. Мы его используем. Так
сегодня он был пойман с поличным — нёс
отсебятину.
Вообще,
технология довольно проста. Где-то на
сервере лежит куча растровых картинок
— тайлов, которые складываясь вместе
дают на экране красивое изображение
местности. Задача клиентского софта (и
ArcGIS Viewer for Silverlight в частности) сводится
к вытягиванию с сервера нужных в данный
момент картинок, после чего сложить их
вместе и вывести на экран. Ну все знают
гуглокарты или яндекскарты.
Так
этот, не побоюсь этих слов, ArcGIS Viewer for
Silverlight, не может вывести растровую
картинку 1:1 (пиксел картинки в пиксел
экрана). Он эти картинки масштабирует!
То сожмет, то растянет, собака страшная.
Поскольку
лучше один раз увидеть, чем сто раз
услышать, я подготовил анимированную
гифку (писк моды — на гуглодрайве!).
Гифка более мегабайта и все время
моргает, поэтому прямо на страницу не
стал ставить.
В
картинке два кадра, один показывает
изображение правильно, 1:1, другой
показывает растянутое изображение.
Растянутое — это ArcGIS Viewer for Silverlight.
По
сцылке открывается гугловьювер, который
дополнительно сжимает картинку, поэтому
лучше всего щелкануть ПКМ на изображении
и выбрать «View image» (или как там в вашем
браузере).
У
меня еще есть анимашка (не стал
выкладывать), где этот вьювер не
растягивает а сжимает картинку. Логика
его действий непостижима, чего еще от
него ждать — неясно.
Собственно,
что я хотел сказать? Отстой этот ваш
Сильверлайт
Вьювер, дорогие товарищи из ESRI.
UPD
Я нашел решение проблемы. Как оказалось, это не бага, это фича. Глубоко в недрах вьювера есть параметр
MapApplication.Current.Map.SnapToLevels
если задать его
MapApplication.Current.Map.SnapToLevels = true;
то вьювер перестает заниматься отсебятиной.
UPD
Я нашел решение проблемы. Как оказалось, это не бага, это фича. Глубоко в недрах вьювера есть параметр
MapApplication.Current.Map.SnapToLevels
если задать его
MapApplication.Current.Map.SnapToLevels = true;
то вьювер перестает заниматься отсебятиной.
Этот комментарий был удален администратором блога.
ОтветитьУдалить