[QUOTE]...то лучше операцию обновления окна отображения карты сделать один раз в самом конце[/QUOTE] Вот поэтому компонента МapScreen более удачная чем MaрView в этом отношении. Спасибо за информацию, для дальнейшей работы может пригодится.
Добавить временную карту
Пользователь
Сообщений: Регистрация: 26.12.2008
31.03.2009 14:20:18
Олег Валентинович уточните плиз по виду функции [B]Declare Function mapCreateAndAppendTempSite Lib "gisacces.dll" (ByVal hMap As Long, ByVal rsc_name As Long) As Long[/B] почему вторым параметром может быть целочисленное значение ? ЗАРАНЕЕ БЛАГОДАРЮ !
построение зоны
Пользователь
Сообщений: Регистрация: 26.12.2008
31.03.2009 14:11:47
[QUOTE]Объект не показывался, наверное потому, что его местоположение было вне текущих габаритов карты sit.[/QUOTE] C.X:=6155700; C.Y:=7406000; C.X:=6160000; C.Y:=7406000; Проверьте на Подольске - может не те координаты :o ------------------------------ Один из разработчиков сообщал, что сит меняет свои габариты по мере наполнения ним объектов или уже нет :?:
Добавить временную карту
Пользователь
Сообщений: Регистрация: 26.12.2008
30.03.2009 23:49:02
InvPoint = mapCreateSiteObject(hTmpMap,hTmpMap,2147254268,0) это же сит ? или нет ? 2147254268 - как раз тот флоат (8-байт) который нужен
Изменено: - 30.03.2009 23:50:01
Добавить временную карту
Пользователь
Сообщений: Регистрация: 26.12.2008
30.03.2009 21:23:52
ВОТ ТАК РАБОТАЕТ по крайней мере в Офисе(бейсике) и Visual Studio 2005 --------------------------- [CODE]Private Declare Function mapCreateAndAppendTempSite Lib "c:\windows\system32\gisacces.dll" (ByVal hMap As Long, ByVal rscname As String) As Long Private Declare Function mapOpenMap Lib "c:\windows\system32\gisacces.dll" (ByVal MapName As String, ByVal mode As Long) As Long Private Declare Function mapCloseMap Lib "c:\windows\system32\gisacces.dll" (ByVal Map As Long) As Long Private Sub CommandButton1_Click() Dim tmprsc As String Dim Map As Long
hTmpMap = mapCreateAndAppendTempSite(hMap, [B]0[/B]) Declare Function mapCreateAndAppendTempSite Lib "gisacces.dll" (ByVal hMap As Long, ByVal rsc_name As [B]String[/B]) As Long Cравните может болжно быть так ==> hTmpMap = mapCreateAndAppendTempSite(hMap, [B]"C:\путь\Файл.rsc"[/B])
Установка GIS ToolKit
Пользователь
Сообщений: Регистрация: 26.12.2008
29.03.2009 11:13:53
Здравствуйте Memfis ! Ваш вопрос состоит из 2-х подвопросов: 1. Под какие версии Делфи ставится GIS ToolKit (это по теме форума) - Delphi 6 - Delphi 7 - Borland Developer Studio - Delphi 2007 2. Как установить и настроить Делфи под Висту (это не по теме) - [URL=http://programmersforum.ru/forumdisplay.php?s=828e06e8eb3133af31ff0b460dc56599&f=34]можно спросить у программистов[/URL] - [URL=http://www.drbob42.com/examines/examin84.htm]посмотерть как запустить 7-ю версию под Висту[/URL] - [URL=http://deldev.blogspot.com/2008/05/windows-vista-delphi-7.html]посмотреть версию Висты совместимую с Делфи 7[/URL] - [URL=http://translate.google.com.ua/translate?hl=ru&langpair=en%7Cru&u=http://edn.embarcadero.com/article/33743&prev=/translate_s%3Fhl%3Dru%26q%3DDelphi%2BWindows%2BVista%26tq%3DDelphi%2BWindows%2BVista%26sl%3Dru%26tl%3Den]и для всякого случая особенности создания приложений в Делфи в Висте[/URL]
Изменено: - 29.03.2009 12:05:57
построение зоны
Пользователь
Сообщений: Регистрация: 26.12.2008
29.03.2009 10:54:11
Александр - здравствуйте ! Вот Вам полный модуль который рисует и на сите и на карте:
type TForm1 = class(TForm) Button1: TButton; Panel1: TPanel; mvMap: TMapScreen; Button2: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation uses Maptype, mapproc;
{$R *.dfm}
procedure mapCreateObjectEllipse(Obj:HObj; Center : TDoublePoint; Ra, Rb : double; angle : double); var A,dA : double; P : TDoublePoint; begin dA:=pi/180; A:=0; while A<=2*pi do begin P.x := Rb*cos(A)*cos(angle)-Ra*sin(A)*sin(angle)+Center.X; P.y := Rb*cos(A)*sin(angle)-Ra*sin(A)*cos(angle)+Center.Y;; mapAppendPointPlane(Obj, P.x, P.Y,0); A:=A+dA; end; end;
procedure TForm1.Button1Click(Sender: TObject); var obj : HObj; C : TDoublePoint; begin case TButton(Sender).Tag of // на форме 2 кнопки с разными значениями свойства Tag 0: Obj:=mapCreateSiteObject(mvMap.MapHandle,mvMap.MapHandle, KM_IDFLOAT2,0); // на карту {***} 1: Obj:=mapCreateSiteObject(mvMap.MapHandle,mvMap.MapSites[0].SiteHandle, KM_IDFLOAT2,0); // на сит end; mapregisterObject(Obj, 32110000, OL_SQUARE);
case TButton(Sender).Tag of 0: C.X:=6155700; 1: C.X:=6160000; end; C.Y:=7406000; mapCreateObjectEllipse(Obj,C,1000,600, 10*pi/180); mapCommitObject(Obj); mapFreeObject(Obj); Mvmap.Repaint; end;
end.[/CODE] --------------------------- Особенность: 1. Используейте компоненту TMapScreen - она является потомком от TMapView 2. MapFileName - основная карта map 3. MapSites - добавьте 1 карту СИТ --------------------------- Если п.3 не будет выполнен - в строке {***} будет Ексепшион !
Изменено: - 29.03.2009 10:56:44
построение зоны
Пользователь
Сообщений: Регистрация: 26.12.2008
28.03.2009 21:48:47
Александр Вы в компоненту MapView в свойство MapFileName что заносите Сит или Мар ? если Сит - то его нужно заносить в MapSites потому-что не перерисует.
построение зоны
Пользователь
Сообщений: Регистрация: 26.12.2008
28.03.2009 21:22:24
[QUOTE]Но эллипс появляется если закрыть а потом открыть карту! mvMap.Refresh; не помогает![/QUOTE]