RUS  ENG 

Масштаб и центр окна для карты загружаемой в компонент TMapCtrl

Страницы: 1
RSS
Масштаб и центр окна для карты загружаемой в компонент TMapCtrl
 
Здравствуйте.

Перешли на версию 6.0.
При работе с картой локально не через ZULU сервер карта загружалась в наше приложение в компонент TMapCtrl с тем же масштабом и центром что были при закрытии карты в приложении Zulu.exe. После того как карту разместили на сервере ZULU, опубликовали и стали работать через описатели в приложении Zulu.exe с масштабом и центром при загрузке все как и при выходе (те же), а в нашем приложении все время карта в компонент TMapCtrl загружается в одном и том же масштабе и с одним и тем же центром, не тем что нам хотелось бы, и не тем что были при закрытии карты. Раньше вроде таких проблем не было. Скажите, может требуется какое то дополнительное действие в нашем приложении выполнять, чтобы карта открывалась с запомненным при выходе масштабом, если да то как лучше нашу проблему решить.

Сервер тоже 6.0 поставили.
 
Если карта в компонент TMapCtrl была загружена в design-time, то в форме сохраняется и она, и масштаб с центром. Потом, при открытии действительно будет браться этот масштаб и центр. Чтобы карта загрузилась с записанным в ней положением, не задавайте карту в design-time, а при загрузке форме (уже в run-time) укажите MapCtrl1.MapPath = <path>
 
Карта загружается в run-time через указаный проект

Вот выдержки из кода

// project_path - путь к открываемому проекту
// project_file_name - файл проекта
// start_map - пользовательское имя стартовой карты
// в базе содержиться информация о проекте и картах проекта (этими данными и пользуюсь при загрузке карты в режиме run-time)
if(!project_path.IsEmpty())
{
project = CoProject::Create();
if (project->Open(project_path+project_file_name))
{
name_project = project->UserName;

//Загружаем карту, указанную по умолчанию
if(!start_map.IsEmpty())
{
for (int i=0; i<project->get_MapsCount(); i++)
{
AnsiString str_tmp = WideToAnsi(project->get_MapUserName(i));
if ( Trim(str_tmp) == Trim(start_map) )
{
path = project->get_MapPath(i);
break;
}
}
if (MapCtrl1->Map->Open(WideString(path)))
{
try
{
MapCtrl1->MapPath = path;

//Добавила принудительную установку масштаба и центра
//StartScale StartX StartY - Объявлены ранее
//Без этих строк масштаб непонятно откуда и какой устанавливается
if (StartScale>0) MapCtrl1->MapScale = StartScale;
if (StartX>0) MapCtrl1->MapX = StartX;
if (StartY>0) MapCtrl1->MapY = StartY;
}
catch (...)
{
ShowMessage("Не могу загрузить карту!");
Application->Terminate();
}
...
 
А можете создать новую программку для проверки из одного только MapCtrl и просто вызвать при загрузке формы
MapCtrl1->MapPath = "Имя карты.zmp";
Какой при этом будет масштаб и центр. И как он будет отличаться от загрузки в Zulu?
 
Создала тест,как сказали, там все в порядке с масштабом и центром.
 
Посмотрите внимательно, что отличает Вашу программу от примера.
 
Спасибо за помощь
Страницы: 1