Для расчета произвольной площади на карте
создаю площадной объект.
hSite := mapGetSiteIdent(form_main.mvMap.MapHandle,1);
ObjectSquare := mapCreateSiteObject(form_main.mvMap.MapHandle, hSite,KM_IDDOUBLE2, 0);
mapRegisterObject(ObjectSquare, 1000000002, OL_SQUARE);
ResObject := mapCreateSiteObject(form_main.mvMap.MapHandle, hSite);
SelectPoint := SelectPoint+1;
SelectPoints := SelectPoints+1;
points[SelectPoint].X := xx1;
points[SelectPoint].Y := yy1;
ProcUzor.PaintRect();
mapAppendPointPlane(ObjectSquare, points[SelectPoint].X, points[SelectPoint].Y, 0);
mapCommitObject(ObjectSquare);
form_main.mvMap.Repaint;
points[SelectPoint].X := xx1;
points[SelectPoint].Y := yy1;
ProcUzor.PaintRect();
mapAppendPointPlane(ObjectSquare, points[SelectPoint].X, points[SelectPoint].Y, 0);
mapCommitObject(ObjectSquare);
form_main.mvMap.Repaint;
form_main.MapFind1.Active := false;
form_main.MapFind1.FindPoint := false;
form_main.MapFind1.MapSelect.Clear;
form_main.MapFind1.MapObj.Style := OS_NORMAL;
form_main.MapFind1.MapSelect.Excode[-1,OL_SQUARE] := false;
form_main.MapFind1.MapSelect.Excode[1000000002,OL_SQUARE] := true;
form_main.MapFind1.Active := true;
form_main.MapFind1.First;
With CreateMessageDialog('Площадь равна '+FormatFloat('0.00',form_main.MapObj1.Square)+' кв.м', mtInformation,[mbYes]) do
begin
Caption := 'Результат';
(FindComponent('Yes') as TButton).Caption := 'ОК';
ShowModal;
If ModalResult = 6 then
begin
N9.Checked := false;
Free;
end;
end;
form_main.MapFind1.MapObj.Delete;
form_main.MapFind1.MapObj.Commit;
form_main.mvMap.Repaint;
mvMap.MapSort(true,true);
form_main.mvMap.Repaint;
Каждый раз приходится наносить физически этот объект на карту,
потом физически его удалять.
Можно ли посчитать площадь этого объекта без физического внесения его на карту,
т.е. без Commit?
создаю площадной объект.
hSite := mapGetSiteIdent(form_main.mvMap.MapHandle,1);
ObjectSquare := mapCreateSiteObject(form_main.mvMap.MapHandle, hSite,KM_IDDOUBLE2, 0);
mapRegisterObject(ObjectSquare, 1000000002, OL_SQUARE);
ResObject := mapCreateSiteObject(form_main.mvMap.MapHandle, hSite);
SelectPoint := SelectPoint+1;
SelectPoints := SelectPoints+1;
points[SelectPoint].X := xx1;
points[SelectPoint].Y := yy1;
ProcUzor.PaintRect();
mapAppendPointPlane(ObjectSquare, points[SelectPoint].X, points[SelectPoint].Y, 0);
mapCommitObject(ObjectSquare);
form_main.mvMap.Repaint;
points[SelectPoint].X := xx1;
points[SelectPoint].Y := yy1;
ProcUzor.PaintRect();
mapAppendPointPlane(ObjectSquare, points[SelectPoint].X, points[SelectPoint].Y, 0);
mapCommitObject(ObjectSquare);
form_main.mvMap.Repaint;
form_main.MapFind1.Active := false;
form_main.MapFind1.FindPoint := false;
form_main.MapFind1.MapSelect.Clear;
form_main.MapFind1.MapObj.Style := OS_NORMAL;
form_main.MapFind1.MapSelect.Excode[-1,OL_SQUARE] := false;
form_main.MapFind1.MapSelect.Excode[1000000002,OL_SQUARE] := true;
form_main.MapFind1.Active := true;
form_main.MapFind1.First;
With CreateMessageDialog('Площадь равна '+FormatFloat('0.00',form_main.MapObj1.Square)+' кв.м', mtInformation,[mbYes]) do
begin
Caption := 'Результат';
(FindComponent('Yes') as TButton).Caption := 'ОК';
ShowModal;
If ModalResult = 6 then
begin
N9.Checked := false;
Free;
end;
end;
form_main.MapFind1.MapObj.Delete;
form_main.MapFind1.MapObj.Commit;
form_main.mvMap.Repaint;
mvMap.MapSort(true,true);
form_main.mvMap.Repaint;
Каждый раз приходится наносить физически этот объект на карту,
потом физически его удалять.
Можно ли посчитать площадь этого объекта без физического внесения его на карту,
т.е. без Commit?