Коллеги, хелп! Не подскажете, в чем может быть причина нераспознавания ключа GTK Free в Delphi 2010? Компилируется и устанавливается нормально, но ругается вот так при попытке поместить компонент TMapView на форму:
Наш ключ прежний, до этого всегда работали в D7 - проблем не было. Поставили 11.10.2 free под D2010 - вот такая фигня... D2010 с обновлениями до 5 включительно. Библиотеки от 04.09.2013
Я бы остался на 7-ке, но нужны некоторые особенности рекордов, которых в семерке нет...
[I](Пока писал, решил, что может это и не ошибка, а нормальное, просто недокументированное, поведение продукта. Но тем не менее...)[/I]
Добрый вечер!
Общее описание ошибки: при подключении геопортала к набору карта + матрицы высот, сформированному в проекции, отличной от проекции геопортала, при автоматической трансформации карты "на лету" не происходит трансформация проекции матрицы, за счет чего происходит искажение информации о высотах карты.
Карта: обзорно-географическая, WGS84, Цилиндрическая Меркатор для карты Мира. Матрица: автоматически трансформирована с помощью Панорамы Мини в проекцию карты из SRTM-формата. Геопортал: OpenStreet Map.
Для наглядности приведу последовательность действий в Панораме Мини, версия 11.10.12, в приложении на ГТК все работает точно так же.
Итак, последовательность действий:
1. Строим карту в проекции. 2. Добавляем матрицы высот импортом из SRTM. 3. Добавляем точки по долине речки Мзымты вдоль полосы аэродрома в Сочи-Адлер (URSS) и далее на Красную поляну. 4. Высота в точке - 18 метров. 5. Добавляем геопортал с помощью стандартного диалога списка открытых данных (если добавлять с помощью функций MAPAPI - поведение не меняется). 6. Для наглядности меняем степень прозрачности матриц на полупрозрачную и выносим их над картой.
7. Наблюдаем смещение матрицы относительно карты визуально, высота в точке 951 м, маршрут из точек теперь проходит по хребту. 8. Меняем масштаб карты на более крупный. Наблюдаем на рисунке 2: картинка матрицы сместилась и совпала (по карйней мере - на глаз) с картой с геопортала, высота в контрольной точке все равно не равна правильной высоте.
9. Отключаем (не убирая) геопортал. Все ошибки по пп. 7-8. 10. Убираем геопортал. Ошибки исчезают. 11. Добавляем геопортал. 12. Убираем матрицы из набора данных не отключая геопортал. 10. Добавляем матрицы в набор данных, на вопрос о трансформации отвечаем утвердительно.
11. На рисунке 3 наблюдаем совпадение координат и высот. Во всех масштабах. Ошибок нет. 12. Убираем геопортал и матрицы из набора данных. 13. Добавляем матрицы - опять запрос на трансформацию.
Проверил работу с ГугльСат и ГугльМап - аналогично.
Рассмотрю предложения работы испытателем КБ Панорама.
При переходе на библиотеку версии от 11.06.2013 с версии от 18.04.2013 замечено следующее:
1. Цвет фона карты самопроизвольно устанавливается на белый 2. Мигает экран при перерисовке карты с помощью Repaint. 3. Становятся невидимы матрицы и растры, добавленные к карте.
На основной карте все отображается.
Все лечится без компиляции простым откатом на версию от 18.04.2013.
Версия GISToolFree 11.9.2 для D7.
Промежуточные версии (вроде как была еще майская версия?) не тестировал.
Если не настраивать при запуске приложения размеры экрана вручную, то размер экрана по умолчанию устанавливается некорректно, а mapGetSreenSize выдает неверное значение - 20 дюймов вместо 15 (512 мм, если быть точным). Замечено после обновления до версии библиотек от 04.04 после того, как поплыли на экране символы... Да, а коэффициент масштабирования по умолчанию установлен в 120 процентов.
Добавлю, что после установки корректного значения с помощью mapSetSreenSize и mapSetSreenScale все начинает отображаться как и прежде. Просто раньше размером экрана не интересовался, поскольку и в МиниКарте и в своих приложениях все всегда рисовалось одинаково.
Вот такое приложение: [IMG]http://i52.fastpic.ru/big/2013/0328/c4/e25a1cc908c7ebabab0d14ff99aefac4.png[/IMG] при выходе генерирует вот такое предупреждение: [IMG]http://i52.fastpic.ru/big/2013/0328/85/8a20d10d9e8e39ad84ce5a2266687685.png[/IMG] Спасибо.
FillChar(aName, MAX_PATH, #0); if aMapView.MapFileName<>'' then for ii:=0 to Length(aMapView.MapFileName)-1 do begin if ii>=MAX_PATH then break; aName[ii] := GTKChar(aMapView.MapFileName[ii+1]); end;