Kaart
Codeunits
CFL Maps Management
procedure PushPin
procedure PushPin(No: code[20]; Name: text[50]; InfoboxText: text[100]; Latitude: decimal; Longitude: Decimal; PinText: text; Color: Text; var JArray: JsonArray; Rec: variant)
Hiermee wordt de opgegeven informatie toegevoegd aan de JsonArray. Deze array kan dan gebruikt worden om op de page "CFL Maps" pins te creëren.
procedure PushPinCompany
procedure PushPinCompany() JArray: JsonArray
Creërt een JsonArry met daarin de pininformatie van de bedrijfsgegevens.
procedure CFLGetLocation
procedure CFLGetLocation(CountryCode: code[10]; PostCode: code[20]; City: text[30]; Address: text[100]; var latitude: Decimal; var longitude: Decimal; var geocodestatus: code[20])
Zoek de latitude en longitude op van het opgegeven adres. indien het adres is gevonden dan is de geocodestatus = 'OK'
Controladdins
CFLMapsControl
Kaart addin.
Pages
CFL Maps Factbox
Part voor het weergeven van een kaart. (Implementatie van de CFLMaps control addin).
procedure CFLSetPushPin
procedure CFLSetPushPin(No: code[20]; Name: text[50]; InfoboxText: text[100]; Latitude: decimal; Longitude: Decimal; PinText: text; Color: Text; var JArray: JsonArray; Rec: variant)
Functie voor het plaatsen van een pin op de kaart.
De pin wordt toegevoegd aan de JArray die meerdere pins kan bevatten.
De kaart geeft alle pins in de JArray weer.
procedure CFLSetPushPins
procedure CFLSetPushPins(var JArray: JsonArray)
Functie voor het plaatsen van meerdere pins op de kaart. Alle pins in de JArray worden weergegeven op de kaart.
procedure CFLRemovePushPins
procedure CFLRemovePushPins()
Functie voor het verwijderen van de pushpins van de kaart. Alle pins worden verwijderd op de kaart.
CFL Maps
Pagina voor het weergeven van een kaart. (Implementatie van de CFL Maps control addin).
procedure CFLSetPushPin
procedure CFLSetPushPin(No: code[20]; Name: text[50]; InfoBoxText: text[100]; Latitude: decimal; Longitude: Decimal; Desc: text; Color: Text; var JArray: JsonArray; Rec: variant)
Functie voor het plaatsen van een pin op de kaart.
De pin wordt toegevoegd aan de JArray die meerdere pins kan bevatten.
De kaart geeft alle pins in de JArray weer.
procedure CFLSetPushPins
procedure CFLSetPushPins(var JArray: JsonArray)
Functie voor het plaatsen van meerdere pins op de kaart. Alle pins in de JArray worden weergegeven op de kaart.
procedure CFLRemovePushPins
procedure CFLRemovePushPins()
Functie voor het verwijderen van de pushpins van de kaart. Alle pins worden verwijderd op de kaart.
event OnAfterPushPinDoubleClicked
[EventSubscriber(ObjectType::Page, Page::"CFL Maps",'OnAfterPushPinDoubleClicked', '', false, false)]
local procedure OnAfterPushPïnDoubleClicked(RecordID :recordid;PushPinRecord: variant)
begin
end
Event wordt getriggerd wanneer een gebruiker dubbelklikt op een pin op de kaart.
De record-id van de pin wordt meegegeven.
Dit wordt bijvoorbeeld gebruikt op bij dubbelklik op een pin, de kaart van de leverancier, klant of contact weer te geven.
Indien het een andere record betreft, dien je op dit event te subscriben om de nodige actie te ondernemen.
event OnAfterPushPnClicked
[EventSubscriber(ObjectType::Page, Page::"CFL Maps",'OnAfterPushPinClicked', '', false, false)]
local procedure OnAfterPushPïnClicked(JObject: JsonObject)
begin
end
Event wordt getriggerd wanneer een gebruiker klikt op een pin op de kaart.
de Json informatie van de pin wordt meegegeven.
de Json bevat volgende informatie:
{ "No": "somenumber",
"Name": "somename",
"Infoboxtext": "someinfoboxtext",
"Latitude": "somelatitude",
"Longitude": "somelongitude",
"PinText": "somepintext",
"Color": "somecolor",
"Recordid": "somerecordid"
}
Voorbeeld
Binnen BoCount Dynamics Base wordt deze kaartcomponent ("CFL Maps factbox") gebruikt bij bijvoorbeeld de contacten.
pageextension 2098113 "CFL Contact List Ext" extends "Contact List"
{
layout
{
addfirst(FactBoxes)
{
part("CFL Maps Factbox"; "CFL Maps Factbox")
{
ApplicationArea = All;
Visible = MapsFactboxVisible;
}
}
}
trigger OnOpenPage()
var
CFLBoCountDynamicsSetup: Record "CFL BoCount System Setup";
begin
if CFLBoCountDynamicsSetup.FindFirst() and (CFLBoCountDynamicsSetup."CFL Bing Maps Key" <> '') then
MapsFactboxVisible := true
else
MapsFactboxVisible := false;
end;
trigger OnAfterGetCurrRecord()
var
JArray: JsonArray;
CFLMapsMgt: Codeunit "CFL Maps Management";
begin
if rec."CFL Geocode Status" <> 'OK' then begin
CFLMapsMgt.CFLGetLocation(rec."Country/Region Code", rec."Post Code", rec.City, rec.Address, rec."CFL Latitude", rec."CFL Longitude", rec."CFL Geocode Status");
if rec."CFL Geocode Status" = 'OK' then
rec.Modify(true);
end;
if rec."CFL Geocode Status" = 'OK' then
CurrPage."CFL Maps Factbox".page.CFLSetPushPin(rec."No.", rec.Name, rec.Address + ' ' + rec."Post Code" + ' ' + rec.City, rec."CFL Latitude", rec."CFL Longitude", '', 'blue', JArray, rec);
end;
var
MapsFactboxVisible: Boolean;
}
Tevens wordt de kaartweergave ("CFL Maps") aangepast met actions om bvb alle contacten weer te geven.
pageextension 2098245 "CFL Base Maps Ext" extends "CFL Maps"
{
actions
{
addfirst(View)
{
action(CFLContacts)
{
Image = PersonInCharge;
Caption = 'Contacts';
PromotedCategory = Category4;
Promoted = true;
PromotedOnly = true;
ApplicationArea = All;
trigger OnAction()
var
Contact: Record Contact;
MapsManagement: Codeunit "CFL Base Maps Management";
JArray: JsonArray;
begin
contact.reset;
Contact.SetRange(Type, Contact.Type::Company);
Contact.SetFilter("CFL Customer No.", '%1', '');
Contact.SetFilter("CFL Vendor No.", '%1', '');
Contact.SetFilter("CFL Latitude", '<>0');
Contact.SetFilter("CFL Longitude", '<>0');
JArray := MapsManagement.CFLContactToPushPin(Contact, '#212121');
CFLAddPushPins(JArray);
end;
}
}
}
}
Via de functie "CFLContactToPushPin" worden alle contacten in een Json-Array gestoken. Deze Json-array wordt dan via "CFLAddPushPins" op de kaart geplaatst.
codeunit 2098109 "CFL Base Maps Management"
{
procedure ContactToPushPin(var Contact: Record Contact; Color: Text): JsonArray
var
JArray: JsonArray;
JObject: JsonObject;
CFLMapsMgt: Codeunit "CFL Maps Management";
begin
if Contact.FindFirst() then begin
repeat
if Contact."CFL Geocode Status" = 'OK' then
CFLMapsMgt.PushPin(Contact."No.", Contact.Name, contact.Address + ' ' + Contact."Post Code" + ' ' + contact.City, contact."CFL Latitude", Contact."CFL Longitude", '', Color, JArray, Contact);
until Contact.Next() = 0;
exit(JArray);
end
end;
}