На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Максим Казаровец (Все сообщения пользователя)

Поиск  Пользователи  Правила  Войти
Форум » Пользователи » Максим Казаровец
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 6 7 8 9 10 11 12 13 14 15 16
Проблема при переходе с 9 на 11 версию, При добавлении пользовательских карт все объекты смещаются в верхний левый угол
 
Автоматически не получается, объекты все равно остаются в верхнем левом углу. По поводу трансформирования: это делается автоматически или надо использавать MapSites->Append(SiteName,mode,transform)?
Проблема при переходе с 9 на 11 версию, При добавлении пользовательских карт все объекты смещаются в верхний левый угол
 
Вроде разобрался, проблема была в том что отличались осевые мередианы. При добавлении пользовательского слоя выскакивало окно Координаты района работы не соответствуют карте, преобразовать? После ответа Да выставляется нужный осевой мередиан, но обстановка на пользовательской карте остается в верхнем левом углу. Если зайти в паспорт карты в Интеграции и поправить самастоятельно осевой мередиан, то обстановка на карте отображается как надо. Не подскажите, что не так и есть ли mapapi  для проверки осевого мередиана, и если он не соответсвует открытой карте поменять его?
Проблема при переходе с 9 на 11 версию, При добавлении пользовательских карт все объекты смещаются в верхний левый угол
 
В ГИС Карта 2011 открывается как надо.
Проблема при переходе с 9 на 11 версию, При добавлении пользовательских карт все объекты смещаются в верхний левый угол
 
При добавлении пользовательских карт все объекты смещаются в верхний левый угол. Пробывал использовать Append и mapapi mapOpenSiteForMap, ситуация повторилась. Такая ситуация наблюдается не на всех пользовательских картах. Проект переводим с 9 на 11 версию в C builder 6. ГТК последенй версии. При каких случаях все знаки смещаются в верхний левый угол??
Как отключить редактирование классификатора через стандартный диалог поиска???
 
Как отключить редактирование классификатора через стандартный диалог поиска???
Как корректно определить рамку векторного объекта, если в классификаторе стоит галочка растягивать???
 
Полазил по форуму, нашел mapGetRscMarkFrame привожу код:
[CODE] TMapScreen *MV;

  TMapRsc *RSC;
  TMapObj *obj
  TMAPDFRAME frame;
  TIMAGEFRAME ImageFrame;
  TDRAWBOX TBX;
  TRect rect;
  HDC mvDC;

if (obj->Local == OL_VECTOR) {
        long int function = mapGetRscObjectFunction(RSC->RscHandle, obj->InCode);
        const char * imgparam = mapGetRscObjectParameters(RSC->RscHandle, obj->InCode);
        TDOUBLEPOINT Point1;
        Point1.X = mapXPlane(obj->ObjHandle,1,0);
        Point1.Y = mapYPlane(obj->ObjHandle,1,0);
        double angle = 0;
        angle = M_PI/2 - mapSideDirection(obj->ObjHandle, 1, 0);
        memset((void*)&ImageFrame, 0, sizeof(ImageFrame));
       
        if (mapGetRscMarkFrame(RSC->RscHandle, function, imgparam, angle, ImageFrame) != 0) {
               // переводим в метры на местногсти
               double factor = 1./1000000. * MV->MapScale;
               ImageFrame.LeftTop.X     = ImageFrame.LeftTop.X * factor + Point1.X;
               ImageFrame.LeftTop.Y     = ImageFrame.LeftTop.Y * factor + Point1.Y;
               ImageFrame.RightTop.X    = ImageFrame.RightTop.X * factor + Point1.X;
               ImageFrame.RightTop.Y    = ImageFrame.RightTop.Y * factor + Point1.Y;
               ImageFrame.RightBottom.X = ImageFrame.RightBottom.X * factor + Point1.X;
               ImageFrame.RightBottom.Y = ImageFrame.RightBottom.Y * factor + Point1.Y;
               ImageFrame.LeftBottom.X  = ImageFrame.LeftBottom.X * factor + Point1.X;
               ImageFrame.LeftBottom.Y  = ImageFrame.LeftBottom.Y * factor + Point1.Y;
               rect = ImgFrameToRect(ImageFrame);

   }

InvalidateRect(MV->Handle, &rect, false);
    mvDC = MV->GetMapScreenDc();
    Rectangle(mvDC, rect.Left, rect.Top, rect.Right, rect.Bottom); //рисуем видимую рамку
    MV->FreeMapScreenDc();
}
TRect __fastcall TMapFunc::ImgFrameToRect(TIMAGEFRAME ImageFrame)
{

   
    TMAPDFRAME frame;
    frame.X1 = min(ImageFrame.LeftTop.X, ImageFrame.RightTop.X);
    frame.X1 = min(frame.X1, ImageFrame.RightBottom.X);
    frame.X1 = min(frame.X1, ImageFrame.LeftBottom.X);
    frame.Y1 = min(ImageFrame.LeftTop.Y, ImageFrame.RightTop.Y);
    frame.Y1 = min(frame.Y1, ImageFrame.RightBottom.Y);
    frame.Y1 = min(frame.Y1, ImageFrame.LeftBottom.Y);
    frame.X2 = max(ImageFrame.LeftTop.X, ImageFrame.RightTop.X);
    frame.X2 = max(frame.X2, ImageFrame.RightBottom.X);
    frame.X2 = max(frame.X2, ImageFrame.LeftBottom.X);
    frame.Y2 = max(ImageFrame.LeftTop.Y, ImageFrame.RightTop.Y);
    frame.Y2 = max(frame.Y2, ImageFrame.RightBottom.Y);
    frame.Y2 = max(frame.Y2, ImageFrame.LeftBottom.Y);

    return DFrameToRect(frame);
}
TRect __fastcall TMapFunc::DFrameToRect(TMAPDFRAME frame)
{
    frame = MV->ConvertDFrame(frame, PP_PLANE, PP_PICTURE);
    //переводим в пиксели
    TRect result;
    result.Left   = Floor(frame.X1 - MV->MapLeft)-5;
    result.Right  = Floor(frame.X2 - MV->MapLeft)+5;
    result.Top    = Floor(frame.Y2 - MV->MapTop)-5;
    result.Bottom = Floor(frame.Y1 - MV->MapTop)+5;
    return result;
}[/CODE]
Вот что получаю: 2 векторных объекта- 1-ый в классификаторе не стоит галочка растягивать, 2-ой- галочка растягивать стоит. Белый пряпоугольник- это видимая рамка нарисованная Rectangle, см. по коду выше.
[URL=http://hostingkartinok.com][IMG]http://s2.hostingkartinok.com/uploads/images/2013/02/45846b1f33849d75f77f5f1541ab71bb.jpg[/IMG][/URL]
если использовать mapObjectViewFrameEx вместо mapGetRscMarkFrame:
[URL=http://hostingkartinok.com][IMG]http://s4.hostingkartinok.com/uploads/images/2013/02/5c7d5d4456cdd171b5f1c46da38a3629.jpg[/IMG][/URL]
Как получить рамку с учетом растяжения объекта на карте через mapGetRscMarkFrame, или рамку которая будет полностью захватывать объект???
Изменено: Максим Казаровец - 12.02.2013 11:28:26
Как корректно определить рамку векторного объекта, если в классификаторе стоит галочка растягивать???
 
Проблема в следующем: при растягивании и повороте не корректно определяется рамка объекта и из-за этого получается грязь при переносе или повороте данного объекта. Для определения рамки использую mapObjectViewFrameEx. Такая проблема была с текстом, но там совсем недавно добавили новую функцию для определения рамки, есть ли что- нибудь подобное для векторных объектов???
Страницы: Пред. 1 ... 6 7 8 9 10 11 12 13 14 15 16



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности