Здравствуйте!
Возникла проблема обновления данных с ГИС Сервер.
Версия GisToolKit Free 14.1.1.0
Версия ГИС Сервера 8.3
Сначала наносим объект, назовем его условно ПЕРВЫЙ ОБЪЕКТ на карту,
с помощью визуального компонента TMapEditMetric
// Вписываем семантику
form_main.MapObj1.Semantic.Delete(-1);
form_main.MapObj1.Commit;
SquareTmp := form_main.MapObj1.Square;
form_main.MapObj1.Semantic.Add(10);
form_main.MapObj1.Semantic.SemanticValue[1] := IDObject;
form_main.MapObj1.Semantic.Add(1002);
form_main.MapObj1.Semantic.SemanticValue[2] := 'не задано';
form_main.MapObj1.Semantic.Add(1013);
form_main.MapObj1.Semantic.SemanticValue[3] := 'не задано';
form_main.MapObj1.Semantic.Add(1016);
form_main.MapObj1.Semantic.SemanticValue[4] := 'не задано';
form_main.MapObj1.Semantic.Add(1024);
form_main.MapObj1.Semantic.SemanticValue[5] := 'не задано';
form_main.MapObj1.Semantic.Add(1030);
form_main.MapObj1.Semantic.SemanticValue[6] := 'не задано';
form_main.MapObj1.Semantic.Add(1017);
form_main.MapObj1.Semantic.SemanticValue[7] := 'не задано';
form_main.MapObj1.Semantic.Add(1021);
form_main.MapObj1.Semantic.SemanticValue[8] := 'не задано';
form_main.MapObj1.Semantic.Add(1012);
form_main.MapObj1.Semantic.SemanticValue[9] := FormatFloat('0.0',SquareTmp);
form_main.MapObj1.Semantic.Add(15);
form_main.MapObj1.Semantic.SemanticValue[10] := PChar(Num);
form_main.MapObj1.Commit;
form_main.mvMap.AdjustData;
form_main.mvMap.Repaint;
Затем, с помощью компонента TMapFind
ищем на карте другой объект, назовем его условно ВТОРОЙ ОБЪЕКТ
form_main.MapFind1.Active := false;
form_main.MapFind1.FindPoint := false;
form_main.MapFind1.MapSelect.Clear;
form_main.MapFind1.MapSelect.ClearSemantic;
form_main.MapFind1.MapObj.Style := OS_SELECT;
form_main.MapFind1.MapObj.StyleSelect := SEL_LINE;
form_main.MapFind1.MapSelect.AddSemantic(10,bd2.QObjectRealtyIDObject.AsString,SC_EQUAL);
form_main.MapFind1.Active := true;
form_main.MapFind1.First;
form_main.MapFind1.MapObj.Center;
form_main.mvMap.Repaint;
Затем, с помощью того же компонента TMapFind
ищем на карте ПЕРВЫЙ ОБЪЕКТ объект
form_main.MapFind1.Active := false;
form_main.MapFind1.FindPoint := false;
form_main.MapFind1.MapSelect.Clear;
form_main.MapFind1.MapObj.Style := OS_SELECT;
form_main.MapFind1.MapSelect.AddSemantic(10,bd_Zones.QSanitZonesDopIDObject.AsString,SC_EQUAL);
form_main.MapFind1.Active := true;
form_main.MapFind1.First;
form_main.MapFind1.Center;
If not form_main.MapFind1.Eof then
begin
// Вписываем семантику
SquareTmp := form_main.MapObj1.Square;
form_main.MapObj1.Semantic.Delete(-1);
form_main.MapObj1.Commit;
form_main.MapObj1.Semantic.Add(10);
form_main.MapObj1.Semantic.SemanticValue[1] := bd_Zones.QSanitZonesDopIDObject.AsString;
form_main.MapObj1.Semantic.Add(1002);
form_main.MapObj1.Semantic.SemanticValue[2] := bd_Zones.QSanitZonesDopAdress.AsString;
form_main.MapObj1.Semantic.Add(1013);
form_main.MapObj1.Semantic.SemanticValue[3] := bd_Zones.QSanitZonesDopServiceOrg.AsString;
form_main.MapObj1.Semantic.Add(1016);
form_main.MapObj1.Semantic.SemanticValue[4] := bd_Zones.QSanitZonesDopINN.AsString;
form_main.MapObj1.Semantic.Add(1024);
form_main.MapObj1.Semantic.SemanticValue[5] := bd_Zones.QSanitZonesDopPhone.AsString;
form_main.MapObj1.Semantic.Add(1030);
form_main.MapObj1.Semantic.SemanticValue[6] := bd_Zones.QSanitZonesDopFIO.AsString;
form_main.MapObj1.Semantic.Add(1017);
form_main.MapObj1.Semantic.SemanticValue[7] := 'не задано';
form_main.MapObj1.Semantic.Add(1021);
form_main.MapObj1.Semantic.SemanticValue[8] := bd2.QObjectRealtyAdressShort.AsString;
form_main.MapObj1.Semantic.Add(1012);
form_main.MapObj1.Semantic.SemanticValue[9] := FormatFloat('0.0',SquareTmp);
form_main.MapObj1.Semantic.Add(15);
form_main.MapObj1.Semantic.SemanticValue[10] := 'П-'+IntToStr(bd_Zones.QSanitZonesDopNum.AsInteger);
form_main.MapObj1.Commit;
form_main.mvMap.AdjustData;
form_main.mvMap.Repaint;
end;
Все работает прекрасно, когда мы наносим и ищем ПЕРВЫЙ ОБЪЕКТ раз, два, бывает три, а вот на третий-четвертый раз
программа вдруг перестает видеть ПЕРВЫЙ ОБЪЕКТ, если быть точнее сам объект на карте есть, а вот семантики, которая вносилась при его создании на экране монитора уже нет.
Соответственно, MapFind не может в это раз найти ПЕРВЫ!Й ОБЪЕКТ на карте.
Причем, если в этот момент перезагрузить пользовательское приложение,
то семантика ПЕРВОГО ОБЪЕКТА появиться на экране монитора.
Такое впечатление, что нет четкого взаимодействия прикладной программы и ГИС Сервера.
Надеемся на команду
form_main.mvMap.AdjustData;
что она решит проблему быстрой синхронизации данных на сервере,
но похоже, что на третий-четвертый раз она или не срабатывает,
или я что-то ни так делаю,
или я чего-то не понимаю.
Возникла проблема обновления данных с ГИС Сервер.
Версия GisToolKit Free 14.1.1.0
Версия ГИС Сервера 8.3
Сначала наносим объект, назовем его условно ПЕРВЫЙ ОБЪЕКТ на карту,
с помощью визуального компонента TMapEditMetric
// Вписываем семантику
form_main.MapObj1.Semantic.Delete(-1);
form_main.MapObj1.Commit;
SquareTmp := form_main.MapObj1.Square;
form_main.MapObj1.Semantic.Add(10);
form_main.MapObj1.Semantic.SemanticValue[1] := IDObject;
form_main.MapObj1.Semantic.Add(1002);
form_main.MapObj1.Semantic.SemanticValue[2] := 'не задано';
form_main.MapObj1.Semantic.Add(1013);
form_main.MapObj1.Semantic.SemanticValue[3] := 'не задано';
form_main.MapObj1.Semantic.Add(1016);
form_main.MapObj1.Semantic.SemanticValue[4] := 'не задано';
form_main.MapObj1.Semantic.Add(1024);
form_main.MapObj1.Semantic.SemanticValue[5] := 'не задано';
form_main.MapObj1.Semantic.Add(1030);
form_main.MapObj1.Semantic.SemanticValue[6] := 'не задано';
form_main.MapObj1.Semantic.Add(1017);
form_main.MapObj1.Semantic.SemanticValue[7] := 'не задано';
form_main.MapObj1.Semantic.Add(1021);
form_main.MapObj1.Semantic.SemanticValue[8] := 'не задано';
form_main.MapObj1.Semantic.Add(1012);
form_main.MapObj1.Semantic.SemanticValue[9] := FormatFloat('0.0',SquareTmp);
form_main.MapObj1.Semantic.Add(15);
form_main.MapObj1.Semantic.SemanticValue[10] := PChar(Num);
form_main.MapObj1.Commit;
form_main.mvMap.AdjustData;
form_main.mvMap.Repaint;
Затем, с помощью компонента TMapFind
ищем на карте другой объект, назовем его условно ВТОРОЙ ОБЪЕКТ
form_main.MapFind1.Active := false;
form_main.MapFind1.FindPoint := false;
form_main.MapFind1.MapSelect.Clear;
form_main.MapFind1.MapSelect.ClearSemantic;
form_main.MapFind1.MapObj.Style := OS_SELECT;
form_main.MapFind1.MapObj.StyleSelect := SEL_LINE;
form_main.MapFind1.MapSelect.AddSemantic(10,bd2.QObjectRealtyIDObject.AsString,SC_EQUAL);
form_main.MapFind1.Active := true;
form_main.MapFind1.First;
form_main.MapFind1.MapObj.Center;
form_main.mvMap.Repaint;
Затем, с помощью того же компонента TMapFind
ищем на карте ПЕРВЫЙ ОБЪЕКТ объект
form_main.MapFind1.Active := false;
form_main.MapFind1.FindPoint := false;
form_main.MapFind1.MapSelect.Clear;
form_main.MapFind1.MapObj.Style := OS_SELECT;
form_main.MapFind1.MapSelect.AddSemantic(10,bd_Zones.QSanitZonesDopIDObject.AsString,SC_EQUAL);
form_main.MapFind1.Active := true;
form_main.MapFind1.First;
form_main.MapFind1.Center;
If not form_main.MapFind1.Eof then
begin
// Вписываем семантику
SquareTmp := form_main.MapObj1.Square;
form_main.MapObj1.Semantic.Delete(-1);
form_main.MapObj1.Commit;
form_main.MapObj1.Semantic.Add(10);
form_main.MapObj1.Semantic.SemanticValue[1] := bd_Zones.QSanitZonesDopIDObject.AsString;
form_main.MapObj1.Semantic.Add(1002);
form_main.MapObj1.Semantic.SemanticValue[2] := bd_Zones.QSanitZonesDopAdress.AsString;
form_main.MapObj1.Semantic.Add(1013);
form_main.MapObj1.Semantic.SemanticValue[3] := bd_Zones.QSanitZonesDopServiceOrg.AsString;
form_main.MapObj1.Semantic.Add(1016);
form_main.MapObj1.Semantic.SemanticValue[4] := bd_Zones.QSanitZonesDopINN.AsString;
form_main.MapObj1.Semantic.Add(1024);
form_main.MapObj1.Semantic.SemanticValue[5] := bd_Zones.QSanitZonesDopPhone.AsString;
form_main.MapObj1.Semantic.Add(1030);
form_main.MapObj1.Semantic.SemanticValue[6] := bd_Zones.QSanitZonesDopFIO.AsString;
form_main.MapObj1.Semantic.Add(1017);
form_main.MapObj1.Semantic.SemanticValue[7] := 'не задано';
form_main.MapObj1.Semantic.Add(1021);
form_main.MapObj1.Semantic.SemanticValue[8] := bd2.QObjectRealtyAdressShort.AsString;
form_main.MapObj1.Semantic.Add(1012);
form_main.MapObj1.Semantic.SemanticValue[9] := FormatFloat('0.0',SquareTmp);
form_main.MapObj1.Semantic.Add(15);
form_main.MapObj1.Semantic.SemanticValue[10] := 'П-'+IntToStr(bd_Zones.QSanitZonesDopNum.AsInteger);
form_main.MapObj1.Commit;
form_main.mvMap.AdjustData;
form_main.mvMap.Repaint;
end;
Все работает прекрасно, когда мы наносим и ищем ПЕРВЫЙ ОБЪЕКТ раз, два, бывает три, а вот на третий-четвертый раз
программа вдруг перестает видеть ПЕРВЫЙ ОБЪЕКТ, если быть точнее сам объект на карте есть, а вот семантики, которая вносилась при его создании на экране монитора уже нет.
Соответственно, MapFind не может в это раз найти ПЕРВЫ!Й ОБЪЕКТ на карте.
Причем, если в этот момент перезагрузить пользовательское приложение,
то семантика ПЕРВОГО ОБЪЕКТА появиться на экране монитора.
Такое впечатление, что нет четкого взаимодействия прикладной программы и ГИС Сервера.
Надеемся на команду
form_main.mvMap.AdjustData;
что она решит проблему быстрой синхронизации данных на сервере,
но похоже, что на третий-четвертый раз она или не срабатывает,
или я что-то ни так делаю,
или я чего-то не понимаю.