В инсталляцию входят примеры для сред Visual Studio и Embarcadero (Delphi, C++ Builder), написанные на языках C++, C#, Basic. В этих примерах можно посмотреть порядок использования объектов и классов. Есть справка axGisToolKit12.chm и документ GisToolKitAX12 Руководство программиста.doc (в них есть информация по OS_SELECT, TxObjectStyle, TxObjectStyleSelect).
Ниже приведу выдержку из другой документации:
//===================================================
// Выбор и настройка состава отображаемых объектов
//===================================================
procedure TMyForm.miSelectViewClick(Sender: TObject);
begin
// Для вступления в силу параметров селекции
MapView.Selecting := true; // данную команду можно выполнить один раз
// либо настроить в компоненте с помощью инспектора //объектов Delphi
// Вызовем диалог
if MapSelectDialog.Execute(MapView.ViewSelect, false) = true
then MapView.Repaint;
end;
//===================================================
//===================================================
Другой важной особенностью любой ГИС является возможность масштабировать изображение карты. В нашем примере это реализовано за счет перехвата нажатия мыши и использования свойства MapView.ViewSelect, отвечающее за текущий масштаб отображения карты.
//===================================================
// Нажали мышью в точке карты
//===================================================
procedure TMyForm.MapViewMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
NewScale : integer;
spoint : TPoint;
begin
if MapView.MapView = false
then exit;
// Будем действовать в зависимости от текущего режима
if miScale.Checked = true
// активен режим масштабирования в точке
then begin
// вычислим новый масштаб
NewScale := MapView.ViewScale;
if Button = mbLeft // по левой кнопке приблизим карту
then NewScale := MapView.ViewScale div 2;
if Button = mbRight // по правой кнопке отдалим карту
then NewScale := MapView.ViewScale * 2;
// установим масштаб в точке
MapPoint.PlaceInp := PP_PICTURE;
MapPoint.Y := MapView.MapTop + Y;
MapPoint.X := MapView.MapLeft + X;
MapView.ScaleInPoint(NewScale,MapPoint.point);
// установим курсор в новую позицию но с теми же координатами в карте
MapPoint.PlaceOut := PP_PICTURE;
spoint.X := trunc(MapPoint.X) - MapView.MapLeft;
spoint.Y := trunc(MapPoint.Y) - MapView.MapTop;
spoint := MapView.ClientToScreen(spoint);
SetCursorPos(spoint.X, spoint.Y);
exit;
end;
end;
//===================================================
//===================================================
При визуальной работе с картой у пользователя обязательно возникнет желание узнать, какие объекты карты находятся в той или иной ее точке (учитывая тот факт, что карта – это многослойный "пирог"). Реализация этой задачи состоит из следующих этапов: определения координат нажатия мыши (искомой точки карты) и последовательный перебор объектов карты в точке с известными координатами. Самый простой способ реализации – воспользоваться методом SelectObjectInPoint компонента TMapObj (отвечает за информацию о конкретном объекте карты) .
//===================================================
// Нажали мышью в точке карты
//===================================================
const
iFindRadius = 5; // радиус поиска в пикселях
procedure TMyForm.MapViewMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if MapView.MapView = false
then exit;
// Будем действовать в зависимости от текущего режима
// поиск в точке с помощью TMapObj
if miInPointDlg.Checked = true
then begin
MapObj.Style := OS_NOVIEW; // если было выделение то снимем его
MapObjFind.Style := OS_NOVIEW; // если было выделение то снимем его
if MapObj.SelectObjectInPoint(X, Y, iFindRadius, dlMinCommon) <> 0
then begin
// выведем название объекта
stMap.Panels[3].Text := MapObj.ObjName;
// выделим объект морганием
MapObj.Style := OS_SELECT;
end;
exit;
end;
end;
//===================================================
//===================================================
Данный метод позволяет не только перебрать все объекты в точке, но и просматривать и редактировать подробную информацию о текущем объекте карты. Существует второй вариант решения этой задачи, более сложный, но он даёт полный контроль над процессом перебора объектов карты и способов их визуального выделения. Этот способ также описан в примере и использует связку из двух ГИС компонент: TMapFind (отвечает за организацию поиска в карте) и TMapObj.