ABAP Development: HowTo add point objects to the map
The Visual Business component supports multiple point located objects:
- Spot: Flat imaged based object consisting of a pin image and an icon
- Box: 3D box object, which can be parameterized for scale, rotation, and color
- Circle: Circle object
- Pie Chart: 3D-Pie Chart
- Collada: Arbitrary 3D object loaded from a Collada DAE file
The basis creation for all those location based objects is the same and shown in this HowTo. In order to show an object on a location on the map we need to add it to the scene. The use of the API is independent from the actual UI technology the VB control is used with. However, there might be also specific API wrappers in certain integration scenarios, e.g. in the FPM integration.First you need to fill a structure of type IF_VBI_SERVICE_PROVIDER=>SPOT_ENTRY. You need to fill field ID and optionally GUID. In case the later is left empty, the Scene Manager will assign a GUID internally.
HIGHLIGHTED: allows you to highlight the object by using a different pin image (by default with a yellow pin border).
- FLY_TO: indicates that you want an animated zoom to the object location.
- SELECTED: Indicates the object as selected (by default with a grey pin border)
- FIXED: Protects the object against easy deletion
Finally you can assign one or more roles to the object by adding them to sub-table ROLES. The role will influence the icon of the spot. The pre-defined roles are defined in constants interface IF_VBI_GEOMAP_CONST structure attribute GC_OBJECT_ROLE.
In order to send the new object to the GeoMap the structure is added to a table of type IF_VBI_SERVICE_PROVIDER=>SPOT_TAB. This table is than given to the GeoMap service provider by calling method UPDATE_SCENE_OBJECTS as parameter IT_SPOTS.
After this you may add further object to the scene. Once your are done you need to trigger the update of the frontend control by raising event IF_VBI_CONST=>GC_EVENT-DISPLAY_SCENE on the scene manager (method HANDLE_EVENT).
The following code snipped from local class LCL_APPLICATION (inheriting from CL_VBI_GEOMAP_APPLICATION) of program VBI_GUI_TEST method ADD_SPOT is an easy example on how to create a spot object:
The result looks like this: