LogoLogo
Changelog
18.5
18.5
  • Welcome
    • Welcome to Airkit 👋
    • Quickstart
  • Concepts
    • Sessions
      • Linking to Sessions
    • Actors
      • Conversations with Actors
  • Tutorials
    • Building A Contact Form
      • Building the Web UI
      • Building the Database
      • Finalizing the App
      • Connecting Forms to Salesforce
    • Styles, Themes, and Templates
      • Changing the header
      • Changing the Theme
      • Using a custom font
      • Using Animations
    • Multi-Page Form
      • Creating the App Object in AirData
      • Building the Form’s UI
      • Creating the Data Flow to insert data
      • Connecting the Data Flow to the UI
      • Previewing and Publishing the app
    • Scheduling and Follow-Up App
      • Collecting Contact Information
      • Creating Appointment Times
      • Saving Appointment Information
      • Scheduling Appointment Reminder
      • Automating Proactive Follow-Up
      • Requesting Feedback
    • Custom Integrations (Petfinder App)
      • Querying the Petfinder API
      • Displaying Petfinder Data
  • Platform
    • Console
      • Apps
      • Activity
      • App Health
      • Datastores
      • Integrations
      • Conversations
      • Resources
      • API
      • Settings
    • Studio
      • Builder Bar
        • Triggers Builder
        • Web Flows Builder
        • Chat Bots Builder
        • Answer Flows Builder
        • Voice Bots Builder
        • Connections Builder
        • Notifications Builder
        • AirData Builder
        • Media Library
        • Theme Builder
        • Schedules Builder
        • Settings
      • App Preview
      • Data Flows
      • Variable Tree
      • Data Model Editor
      • Events
        • Session Started Events
        • Trigger Events
        • Control Events
        • Session Events
        • Activity Group Events
        • Action Chains
  • Data and Integrations
    • Working with Data
      • Variable Namespaces
      • Standard Session Data
      • AirData
        • AirData App Objects
        • Datastores
        • Identity Objects
        • Place Objects
        • Schedule Objects
      • Airscript Quickstart
        • Working with Dates and Times
        • Working with Missing Values
        • Working with URLs and Base64
      • Pull Values from Lists and Objects
        • Path Expressions
        • Query Expressions
      • Making Forms from Data Models
    • Integrations
      • First Party Integrations
        • Creating A Salesforce Lead
        • Creating a Zendesk Ticket
        • Creating SFTP Credentials
        • Swagger Schema Validation
        • First Party Integration Reference
          • Airtable Integration
          • Genesys Widget Integration
          • Google Integration
          • Guidewire Integration
          • Hubspot Integration
          • Kustomer Integration
          • MX Integration
          • Plaid Integration
          • Salesforce Integration
          • SendGrid Integration
          • SFTP Integration
          • Shopify Integration
          • Stripe Integration
          • Twilio Integration
          • Zendesk Integration
      • Custom Integrations
        • OAuth 2.0
        • API Token
        • HTTP Basic Auth
        • Custom Token
        • SFTP
        • Examples: Twitter and Giphy
      • App APIs
        • Building an App API
      • Subscriptions (Web Hooks)
  • Texts, Calls and Emails
    • SMS
      • SMS Notification Basics
      • Chat Bot Basics
      • Texting Journey Links
      • Data from Inbound Calls/SMS
      • Connecting Twilio Numbers
    • Emails
      • Email Notification Basics
      • Sending Emails by Data Operation
      • Connecting Email Addresses
    • Voice Bots
      • Voice Bot Basics
    • Conversation Chat Bots
      • Setting Up Answer Groups
      • Configuring Conversation Chat Bots
        • Salesforce Relays
        • Kustomer Relays
  • Web Apps
    • Forms
      • Displaying Controls Dynamically
      • Repeating Elements
      • Prefilling Forms
      • Validation of User Data
      • Capture Secure User Data
      • Progress Bars
      • Dropdown Menus
      • Electronic Signatures
    • Calendars
      • Customizing Schedule Availability
      • Using Availability Schedules
      • Rescheduling Deflected Calls
      • Integrating to External Calendars
    • Maps and Addresses
      • Maps
      • Addresses
      • User's Current Location
      • Address Search Map Binding
    • Payments
      • Creating a Stripe Integration
    • Timers and Reminders
      • Setting Timers
      • Setting up Periodic Tasks
    • PDFs
      • Creating a PDF
      • Working with Existing PDFs
      • Adding Assets to PDF
    • Assets and Media
      • Using the File Upload Web Control
      • Working with Files and Media
      • Assets and Data Operations
      • Sending Assets to Remote Servers
    • Styling Overview
      • Web Control Styling Properties
        • Animations
      • Themes and Control Variants
        • Importing and Exporting Themes
      • Working with Custom Assets
      • Page Layouts
        • Creating an App Header
    • Publishing
      • Publish and Manage Deployments
      • Configure Application Resources
      • Editing an Application
      • Importing/Exporting Apps
      • Tying Variables to Deployments
    • Advanced
      • Custom Controls
      • Creating Custom Functions
    • Accessibility
      • Accessibility in Airkit
      • Connecting Labels to Input Controls
  • Authentication
    • SAML Authentication
    • OAuth 2.0 - Google
    • OAuth 2.0 - Okta
    • OAuth 2.0 - Auth0
    • Azure AD B2C
    • Authentication Apps and Secure Apps
  • Embeds
    • SDK Overview
      • SDK Quickstart
      • SDK Authentication
      • Passing Data
      • Configuration
      • Configuration Examples
      • Airkit Lightning Component (Salesforce)
  • Analytics and Administration
    • Airkit Organizations
    • Adding Users to Airkit
    • User Roles
      • Working with Custom Roles
    • JIT Provisioning for an Organization
    • SAML SSO for an Organization
    • Managing the Application Lifecycle
    • Environments
      • Environmental Governance
    • Getting Application Metadata
    • Custom Domains
    • Analytics Overview
      • App Events to Splunk
      • App Events to AWS S3 Buckets
      • Audit Logs to AWS S3 Buckets
      • View Data in Activity Explorer
      • Snowflake Analytics Schema
      • Power BI
      • Heap and GTM Integrations
        • Setting up Analytics with GTM
        • Setting up Analytics with Heap
    • Error Management
      • Logging Errors
      • Setting up Email Notifiers
      • Integrating Error Notifiers to Slack
  • Security and Compliance
    • App Security FAQ
    • Data Masking and Auditing
    • IP Ranges
    • Encrypting Data
    • SSL Auth
    • TCPA
    • Cookie Policies
    • Supported Browsers
    • Realms
  • Reference Docs
    • Reference Documentation Overview
    • Airscript
      • Text Functions
        • CAPITALIZE
        • CONCAT
        • ISSTRING
        • LOWERCASE
        • PADSTRING
        • REPLACE
        • REPT
        • SPLIT
        • STRING_COMPARE
        • STRING_FIND
        • STRIP
        • SUBSTITUTE
        • SUBSTRING
        • TITLECASE
        • TRIM
        • UPPERCASE
      • DateTime Functions
        • ADD_TO_DATE
        • ADD_TO_DATETIME
        • DATE
        • DATETIME
        • DATETIME_DELTA
        • DATETIME_FROM_FORMAT
        • DATETIME_FROM_TIMESTAMP
        • DATE_DELTA
        • DATE_FROM_DATETIME
        • DATE_FROM_FORMAT
        • DAY
        • DAYS
        • FORMAT_DATE
        • FORMAT_DATETIME
        • FORMAT_TIME
        • HOUR
        • ISO_WEEK
        • MINUTE
        • MONTH
        • NOW
        • SECOND
        • SUBTRACT_FROM_DATE
        • SUBTRACT_FROM_DATETIME
        • TIME
        • TIMESTAMP_FROM_DATETIME
        • TIME_DELTA
        • TIME_FROM_DATETIME
        • TIME_FROM_FORMAT
        • TODAY
        • UPDATE_DATE
        • UPDATE_DATETIME
        • UPDATE_DAY
        • UPDATE_HOUR
        • UPDATE_MILLISECOND
        • UPDATE_MINUTE
        • UPDATE_MONTH
        • UPDATE_SECOND
        • UPDATE_TIME
        • UPDATE_TIMEZONE
        • UPDATE_YEAR
        • WEEK
        • WEEKDAY
        • YEAR
      • List Functions
        • CONTAINS
        • FIRST
        • FLAT
        • JOIN
        • LAST
        • LENGTH
        • REMOVE_EMPTY
        • REVERSE
        • SHUFFLE
      • Object Functions
        • KEYS
        • MERGE_OBJECTS
        • OBJECT_TO_SOAP
        • OBJECT_TO_XML
        • SOAP_TO_OBJECT
        • SOAP_HEADER_TO_OBJECT
        • VALUES
        • XML_TO_OBJECT
      • Math Functions
        • ABS
        • ACOS
        • ACOSH
        • ACOT
        • ACOTH
        • ASIN
        • ASINH
        • ATAN
        • ATAN2
        • ATANH
        • CEILING
        • COMBIN
        • COMBINA
        • COS
        • COSH
        • COT
        • COTH
        • CSC
        • CSCH
        • DEGREES
        • EVEN
        • EXP
        • FACT
        • FACTDOUBLE
        • FLOOR
        • GCD
        • ISEVEN
        • ISNUMBER
        • ISODD
        • LATLNGDISTANCE
        • LCM
        • LN
        • LOG
        • MAX
        • MIN
        • MROUND
        • MULTINOMIAL
        • ODD
        • PI
        • POWER
        • PRODUCT
        • RADIANS
        • RANDOM
        • RANGE
        • ROUND
        • ROUNDDOWN
        • ROUNDUP
        • SEC
        • SECH
        • SIGN
        • SIN
        • SINH
        • SQRT
        • SQRTPI
        • SUM
        • SUMSQ
        • TAN
        • TANH
        • TRUNC
      • Conditional Functions
        • EQUAL
        • IF
        • ISEMPTY
        • ISNOTEMPTY
        • NOT
      • Currency Functions
        • CURRENCY
        • FORMAT_CURRENCY
        • PARSE_CURRENCY
      • Phone Functions
        • FORMAT_PHONE
        • ISPHONE
        • PARSE_PHONE
      • Email Functions
        • ISEMAIL
      • Number Formatting Functions
        • ARABIC
        • FORMAT_NUMBER
        • PARSE_NUMBER
        • ROMAN
      • Data Type Functions
        • FROM_JSON
        • TO_JSON
        • TYPEOF
      • Asset Functions
        • ASSET_SIZE
        • ASSET_STATE
        • ASSET_THUMBNAIL_URL
        • ASSET_TO_URI
        • ASSET_TYPE
        • URI_TO_ASSET
      • Encoding Functions
        • BASE
        • BASE64_DECODE
        • BASE64_ENCODE
        • HMAC_MD5
        • HMAC_SHA1
        • HMAC_SHA256
        • MD5
        • SHA1
        • SHA256
        • URL_DECODE
        • URL_ENCODE
        • UUID
        • VALUE_OF
      • Error Handling Functions
        • THROW
        • TRY
      • Form and Validation Functions
        • FIRST_VALIDATION
        • RUN_VALIDATIONS
      • Arithmetic Operators
        • Addition (+)
        • Subtraction (-)
        • Multiplication (*)
        • Division (/)
        • Remainder (%)
      • Comparison Operators
        • Equality (=)
        • Inequality (<>, !=)
        • Ordering (<, <=, > , >=)
      • Logical Operators
        • AND
        • OR
        • XOR
        • Null Coalescing Operator (??)
      • Advanced Expressions
        • LET...IN
        • User Defined Functions
    • Web Controls
      • Button
      • Checkbox
      • Chat
      • Simple Checkbox List
      • Container
      • Container List
      • Credit Card
      • Currency Input
      • Date Input
      • Date Picker
      • Dropdown List
      • Email Input
      • Embedded External Content (iFrame)
      • Fieldset Container
      • File Upload
      • Form
      • Hyperlink
      • Image
      • Inline Container
      • Label
      • Map
      • Markdown
      • Number Input
      • Payment Request Button
      • Phone Input
      • Place Search Input
      • Progress Bar
      • QR Code
      • Radio Button
      • Simple Radio List
      • Scheduler
      • Secure String Input
      • Selectable Container
      • Signature Input
      • Text Area
      • Text Input
      • Time Input
      • Web Flow
      • Web Page
    • Voice and Chat Controls
      • Decision Menu
      • Forward Call
      • Secure Touchtone Capture
      • Text Response Capture
      • Touchtone Capture
    • Data Operations
      • AirData Request
        • DELETE
        • PUT
        • INSERT
        • PATCH
        • QUERY
        • DEPRECATED_QUERY
      • Calendar Search
      • Close Conversation
      • Conversation Transcript
      • Create File
      • Delete Assets
      • Download Encoded Asset
      • Early Return
      • Fetch Agent Information
      • Fetch Asset Details
      • Fetch Routing Flow Stats
      • Find Conversations by Customer Identifier
      • Fill PDF Form
      • Google
      • HTML to PDF
      • HTTP Request
        • Using an API With Paging
      • JWT Generation
      • Merge PDF
      • Move Conversation to Routing Flow
      • Opt Out Search
      • Opt Out List
      • Run Data Flow
      • Run Event in Journey
      • Salesforce
      • Secure Value Retrieval
      • Send Email
      • Send Message to Conversation
      • SFTP
      • Start Journey
      • Swagger Schema Validation
      • Transform
      • Update Customer Identifier
      • Wait
      • XML to JSON
      • Zendesk
      • ZIP File
    • Actions
      • Analytics Identify
      • Analytics Send Event
      • Close Modal
      • Condition
      • End Session
      • Extend Session Expiration Time
      • Initialize Actor
      • Log Custom Event
      • Metric: Count
      • Metric: Field
      • Metric: Start Timer
      • Metric: Statistic
      • Metric: Stop Timer
      • Navigate To Web Flow
      • Navigate to Web Page
      • Open Modal
      • Run Data Flow
      • Run Data Flow Repeatedly
      • Run Embedded Outgoing Event
      • Run Event
      • Send Email
      • Send SMS
      • Set Authentication
      • Set Identifier
      • Set Variable
      • Start Chat Bot
      • Start Voice Bot
      • Start Timer
      • Stop Timer
      • Throw
      • Trigger Form Validation
      • Try
    • Conversation Actions
      • Ask A Question
      • Capture User Response
      • Close Conversation
      • Move Customer to Resource
      • Move Conversation to Routing Flow
      • Quick Replies
      • Run Answer Flow
      • Start Conversation Chat Bot
      • Start Conversation
      • Send Link
      • Text Answer
      • Update Customer Identifier
    • Primitive Data Types
      • Any (JSON)
      • Asset
        • Detailed Asset
      • Boolean
      • Currency
      • Date
      • DateTime
      • Email
      • List
      • Null
      • Number
      • Phone
      • Text
      • Time
  • Transportation Products Catalog
    • The Transportation Products API
      • GET products
      • GET product-by-id
  • Release Notes
    • CXR Overview
    • CXR Upgrades and Migrations
Powered by GitBook
On this page
  • Display a map of a single location
  • Display multiple locations on a map

Was this helpful?

  1. Web Apps
  2. Maps and Addresses

Maps

PreviousMaps and AddressesNextAddresses

Last updated 1 year ago

Was this helpful?

The provides the ability to integrate and display a map within Airkit, building out applications that leverage addresses and a user's location. For example, the maps control is useful for building out experiences that display a map for a specific location, finding nearby businesses, or to pinpoint a current user's location. This article will walk through the following:

Display a map of a single location

The map control can be used to display a single location in an application. This is great for showing users where a specific location is on a map, such as a home or business location. This section will walk through how to add a map to an application and show a single location that is marked, specifically the Chase Center in San Francisco, CA.

First, within a web page, add the maps control. By default, the maps control will display a view of Palo Alto.

With the map control selected in the tree, go to the inspector and change both the Center property and the Markers property to the List of objects below. The Center property expects a single object containing the latitude and longitude properties like so:

{  
  "latitude":37.7680466,  
  "longitude":-122.387715  
}

The Markers property expects a List of Objects, like so:

[{  
  "latitude":37.7680466,  
  "longitude":-122.387715  
}]

The Center property will center the map around the location object that is passed. The Markers will place the 'teardrop' markers at the locations of the List of Objects passed.

Display multiple locations on a map

The maps control also supports showing multiple locations within the control. Displaying multiple locations is useful for showing nearby points of interests or even loading multiple locations into a map from AirData. This section will walk through how to build out both of those experiences within an application.

Searching for nearby points of interest

Searching for nearby points of interest can be used within a journey to look for nearby restaurants, or locate the nearest car repair shop. This example will walk through how to build out a search experience to find nearby gas stations.

  • latitude

  • longitude

  • name

  • identifier

  • formatted_address

  • icon

To do this, go to AirData Builder, then click on the '+' icon and click on 'Add Place'. For this example, rename the Place object to 'Place'. Then save the application.

After saving the application, go the web page in Web Flows Builder and add the following variables with the associated types:

  • location: Place

  • nearby_poi: List of Places

Under the Actions tab on the Place Search Input control, use the Set Variable action to set nearby_poi to event.value.

After finishing configuring the Place Search Input, click on the Map control and go to the General tab in the inspector. In the Markers property, add nearby_poi. In the center property, add location.

Note: To identify the current location that the map is using to find nearby gas stations, check the showIndicator property.

After saving the application, go to App preview to test out your app. The map will automatically add markers to the nearby gas stations based on your location. The search input box can be used to refine a specific gas station brand, or you can hide the place search control from view to just show the nearby gas stations in a specified radius without allowing the user to alter it. If the application was purely used for searching across any points of interest, the placeType property can be left blank on the place search input control.

Loading locations from AirData

The map control can also be used to mark locations that are stored in AirData or other external systems. This example will walk through how to load locations from AirData and mark those locations on a map.

In order to load locations from AirData to a map, there has to be an App object to store the data, as well as some location data points. The data points that will be used are nearby parks relative to a specific location in Palo Alto.

Adding locations to AirData through a DataFlow

To add locations through a Data Flow, create a Data Flow, name it 'Insert Parks' and add an input of the type 'List of Parks'. Name the input variable to 'parks'.

Below is some sample park data that will be inserted into the Parks App Object. Copy and paste the sample data into the parks input variable created in the previous step.

[  
  {  
    "latitude": 37.42967099999999,  
    "longitude": -122.1410736,  
    "formattedAddress": "Palo Alto",  
    "identifier": "",  
    "name": "Jerry Bowden Park",  
    "icon": "https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/park-71.png"  
  },  
  {  
    "latitude": 37.42578719999999,  
    "longitude": -122.1427593,  
    "formattedAddress": "202 Ash Street, Palo Alto",  
    "identifier": "",  
    "name": "Sarah Wallis Park",  
    "icon": "https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/park-71.png"  
  },  
  {  
    "latitude": 37.431507,  
    "longitude": -122.147651,  
    "formattedAddress": "1899 Park Boulevard, Palo Alto",  
    "identifier": "",  
    "name": "Peers Park",  
    "icon": "https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/park-71.png"  
  }  
]

Click on the 'play' icon, which should insert the three parks into the Park app object. Now there is data to retrieve from the application.

Retrieving Parks to Display on the Map

Now that there is data in the Parks App object, it can be passed to the Maps control using a Data Flow. The Data Flow will simply be a query to the Parks App object, which will then pass the list of parks as the output of the Data Flow.

First, add a Data Flow in Connection builder, name it 'Retrieve Parks' and add an AirData Operation. Select the Parks App Object and choose the type 'Query'.

objectService.results

for the transform expression. This will parse out only the results from the query, which is needed to mark locations on the map. Also, change the variable Type to 'List of Parks'.

Lastly, pass the transform variable as the return value at the end of the Data Flow.

Displaying Locations on the Map

Now that the application has a Data Flow configured to retrieve parks from AirData, the parks can be passed to the maps control. For this example, the Data Flow will run on the Card Updated event, but the parks can be retrieved through any other events or actions using the Data Flow. First, add a variable on the web page with the type 'List of Parks' and name the variable parks.

Then click on the Actions tab on the web page, and under the Card Updated event, add a 'Run Data Flow' action. Select the Data Flow created in the previous step to retrieve parks and bind the output to the parks variable.

  • markers: parks

  • center:

{  
  "latitude":37.4404217,  
  "longitude":-122.1476691  
}

This will pass in the list of parks and mark them on the map as well as hardcode the center of the map to be at that specific location. As an optional step, check the showIndicator property to make the indicator visible. After configuring the map control properties, go to App Preview and see the three marked parks on the map.

For more information on all of the map control properties, see Also, to display a location indicator for the current user's location, see .

In the web page of the application, add a control and a control. The place search control will be where users can type and search for what kind of gas stations are nearby, and the Map control is used to display the locations of those gas stations.

Then create a in AirData, which is a pre-defined location object that includes the following properties:

.gif)

Then, on the Place Search Input control, bind the location variable to the location property, placeType to "gas_station", nearby_poi to searchResults, change the searchType to 'nearby', and rankBy to 'distance'. By binding the location variable to the location property, allows the control to prefer results in the specified area that is passed by the location variable. Also by binding nearby_poi to searchResults, allows the results to be surfaced as an array/list. Lastly, by adding the string "gas_station" to placeType, this will return that particular type of place. For additional information on place types, see the by Google.

First, go to AirData and create a and name it 'Parks'. This is where the locations to mark on the map will be stored.

Next, add some locations to the Parks app object. In order for the maps control to mark locations, it requires the latitude and longitude of the location. This can either be done manually or through a

Then add an , select the 'Parks' App Object, and select the INSERT type. Lastly add the parks input variable as the object to insert. The Data operation should look like below:

Then, add a and use:

After configuring the Data Flow, add a to the web page. With the map control selected, go to the inspector under the General tab, and enter in the following for their respective properties:

Map Web Control.
Working with the Users Current Location
Place Search
Map
'Place' app object
Places API
Place object
Data Flow.
AirData Data Operation
Transform data operation
Map control
Searching for nearby points of interest
Loading locations from AirData
Maps Web Control
Display a map of a single location
Display multiple locations on a map