Добрый день! Столкнулся с проблемой отрисовки карты при переходе к более крупным масштабам. Используется обзорная карта мира, иногда есть необходимость отобразить и посмотреть информацию для масштаба 1 : 5000 и ниже. При таких вводных размер карты превышает допустимые значения типа int. Функция mapPaintToXImage в свою очередь принимает на вход структуру RECT в которой задаются параметры выводимого фрагмента карты, все они имеют тип int.
Здесь возникает вопрос: чем можно отрисовать карту если требуемый фрагмент находится по координатам дальше чем позволяет указать тип int?
Предполагается, что размер выводимого фрагмента, не превышает ~2-миллиарда пикселов. Рекомендуется уменьшить масштаб отображения или разделить карту на фрагменты, не превышающие указанного значения.
Здравствуйте.Предполагается, что размер выводимого фрагмента, не превышает ~2-миллиарда пикселов. Рекомендуется уменьшить масштаб отображения или разделить карту на фрагменты, не превышающие указанного значения.
Спаcибо за ответ, но вы не поняли суть вопроса. У меня не выводимый фрагмент превышает размер, а сдвиг выводимого фрейма находится физически за пределами int по долготе. Функция mapPaintToXImage принимает параметр RECT с координатами фрейма, но все они int.
Размер сдвига не может превышать размер отображаемого фрагмента, который ограничен максимальным значением типа int. Для отображения таких данных необходимо разделить их на несколько фрагментов, не превышающих данное ограничение.
Константин Ганюшин написал: Здравствуйте. Размер сдвига не может превышать размер отображаемого фрагмента, который ограничен максимальным значением типа int. Для отображения таких данных необходимо разделить их на несколько фрагментов, не превышающих данное ограничение.
Я конечно всё понимаю, но может вы ответите конкретно на вопрос: какой функционал из состава ГИС Конструктор можно использовать для этих целей?
При такой детализации рекомендуется использовать карты на определенный регион (например, доступные для загрузки карты на основе данных OpenStreetMap на нашем сайте), т.к. обзорная карта мира не содержит необходимой детализации для отображения в таком масштабе. Список доступных регионов в подготовленных картах на нашем сайте постоянно расширяется и при необходимости может быть дополнен на указанный Вами регион.
Средствами ГИС Конструктора произвести нарезку карты на фрагменты можно, например, с помощью функции vecCutSiteToSheets (vecexapi.h):
Код
// Нарезать исходную карту по листам выходной карты
// hmap - идентификатор открытых данных
// hsite - идентификатор открытой пользовательской карты
// hmapout - идентификатор выходной карты (для ускорения загрузки установить mapSetLoadState)
// hselect - условия отбора объектов или 0 (обработать все объекты)
// Возвращает число обработанных объектов
// При прерывании задачи оператором возвращает -1
// При ошибке возвращает ноль
_VECIMP long int _VECAPI vecCutSiteToSheets(HMESSAGE handle, HMAP hmap, HSITE hsite, HMAP hmapout, HSELECT hselect);