Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Scenario
As customers are created or modified, their addresses are automatically geocoded and their location are stored in a set of new fields on the Customer table. A factbox showing the current location of the customer on a map is added to the Customer Card and links to open a large map or get directions are available as well. As a bonus, you can create an action, which will display all customers within a certain range on a map.
To complete this challenge, you will need
- A Dynamics 365 Business Central Sandbox Environment
- Use https://aka.ms/bcsandbox to create an Azure VM if you do not have a sandbox environment.
- Visual Studio Code with the AL Extension installed
- Azure VMs will have VS Code pre-installed
- A BingMaps API Key from https://www.bingmapsportal.com (Public WebSite or Dev/Test key)
Expected result
Steps
- Create an empty app
- Create a table extension for the customer table and add fields
- Create a page extension for the customer card and add fields
- On the OnBeforeModify and OnBeforeInsert triggers on the Customer table, geocode the customer address using BingMaps API
- Create a CardPart page showing a map of the geocoded position
- Create an action opening a browser with all customers as shared places
Hints
- In VS Code, use Ctrl+Shift+P and type AL GO and remove the customerlist page extension
- Use the ttableext, the tfield and the tkey snippets
- Use the tpageext and the tpagefield snippets
- Use HttpClient to communicate with the Web Service and use Json types (JsonObject, JsonToken, JsonArray and JsonValue) to extract values from the Web Service result
- Use tpage snippet and add usercontrol with the WebPageViewer. Use https://www.bing.com/maps/embed-a-map to see the html you can use In the control.
- Add location of all customers to the sp parameter as explained here: https://msdn.microsoft.com/en-us/library/dn217138.aspx
Cheat sheets
- Create an empty app
- Create a table extension
- Create a page extension
- Code for geocoding an address
- The customer map card part
- Add the customer map to the Customer Card
- Show all customers on a map
Happy coding
Freddy Kristiansen
Technical Evangelist
Passwords: Biza5514, Repe6676, Vady4574, Huwa2666, Dahi8208, Bamu6541, Xepe8513