Geopoints

Geopoint questions allow you to capture a specific location in a survey. While survey responses in Survey123 always attempt to capture a device's location even if a geopoint question is not included, a visible geopoint question on the form results in better capture of location information.

Geopoint question by default

Consider the following when using geopoints:

  • You can add multiple geopoint, geotrace, or geoshape questions to a survey; however, you can use only one of them as the geometry of the survey record. You can use multiple map questions if all but one question has bind::esri:fieldType set to null.
  • Each repeat in a survey can also have more than one geopoint, geotrace, or geoshape question; however, you can use only one of them as the geometry of a repeat record. You can use multiple map questions with the same method described above.
  • By default, Survey123 displays WGS84 latitude and longitude values in degrees/minutes/seconds format. To change this display for a survey, select the Map tab and choose a different Coordinate format value.
  • By default, a geopoint question uses an online basemap. If the survey will be used offline, see Use offline basemaps.
  • Point locations from the first geopoint question in a repeat can be displayed on any map in the survey. For more information, see Point overlays on maps.
  • If you do not include a geopoint, geotrace, or geoshape question in a survey, the main feature layer for the survey will have a geometry type of esriGeometryPoint. The point location will be populated with the location information available from the device at the time the survey is opened. This behavior applies even if the survey has repeats that contain map questions but doesn't include a map question outside of the repeats.
  • By setting the geopoint question's appearance column to press-to-locate, Survey123 will only capture a point when the user interacts with the question.
  • When capturing responses using a map, not all features of the Survey123 field app are supported in the web app. The following features are supported in the Survey123 field app but not in the web app:
    • Offline basemaps.
    • Location averaging for geopoint questions.
    • Geopoint symbology.
    • Location accuracy thresholds and location quality expressions.
    • All pulldata("@geopoint") properties. The web app only supports the x, y, z, horizontalAccuracy, verticalAccuracy, speed, and direction properties.

Location accuracy threshold

By default, Survey123 does not check for accuracy in the position values it collects. If position accuracy is important for the survey results, you can define an accuracy threshold with location averaging. This can be done by entering a numerical value in the body::accuracyThreshold column of the geopoint question. This value will be the threshold of accuracy beyond which values are no longer captured when averaging a location.

Error message when a response exceeds the accuracy threshold of 5 meters

When not averaging, the map panel in the Survey123 field app displays a warning if the position accuracy is larger than the defined threshold but doesn't prohibit the user from capturing locations. To capture a location that meets the threshold, wait until there is no warning, and select the location button. Positions that do not meet the accuracy threshold are automatically ignored while averaging.

Location quality expressions

The location accuracy threshold is a single number, a minimum value for the horizontal accuracy of a given location. To warn a user that their location doesn't meet other more complex quality requirements, or to constrain them from submitting that location, an expression can be used. The following are the columns (along with their associated message columns) where you can enter these expressions:

  • The constraint and constraint_message columns can be used to prevent the user from capturing a location in a geopoint question when the location quality expression is not met.
  • The bind::esri:warning and bind::esri:warning_message columns can be used to display a warning to the user if the location quality expression is not met. If the location quality expression is not met, the bar containing the coordinate value at the top of the geopoint question turns yellow. In this case, the user can still capture the location.
Warning message when response fails to meet location quality expression

An expression can be created in either of these columns using any question from the survey; typically questions or parameters related to the survey location are used.

For location parameters that can be used, see the Extract geopoint values section below.

As an example, the following expression can be used to ensure that the user has come to a near-standstill before capturing a location and that horizontal accuracy is better than 5 meters:

pulldata("@geopoint", ., "horizontalAccuracy") < 5 and pulldata("@geopoint", ., "speed") < 0.1

Tip:

While you may want the user to capture a point when standing still, rarely will a device report a speed value of zero. For this reason, the example above searches for a speed of less than 0.1 to introduce an acceptable margin of error.

If the location must be captured under the conditions described by the expression, enter the expression in the constraint column. If it's only a recommendation, entering the expression in the bind::esri:warning column displays the accompanying warning message to the user. The user can still capture the location in the geopoint question.

The constraint and bind::esri:warning messages are displayed if the expression in these columns evaluates as false.

For very large or complex expressions, it's recommended that you separate the pulldata("@geopoint") functions into individual questions and refer to these question names in the expression. For example, to perform the same function as the example above, you can use the following calculation in a question named hAccuracy:

pulldata("@geopoint", ${location}, "horizontalAccuracy")

Then, you can use the following calculation in a question named currentSpeed:

pulldata("@geopoint", ${location}, "speed")

The following calculation an be used as the constraint or warning expression for the geopoint question:

(${hAaccuracy} < 5) and (${currentSpeed} < 0.1)

Report the 95 percent confidence interval

Your organization may require that collected data be reported at a specific confidence interval (CI). By default, when the accuracy type that is returned is root mean square (RMS), the CI is 68 percent. To report the 95 percent CI in a survey, multiply the horizontal accuracy by 1.7308 and the vertical accuracy by 1.9600. For more information about these conversion factors, see the National Standard for Spatial Data Accuracy.

High-precision accuracy example

In this example, an absolute minimum set of variables must be met, but the user is given discretion to collect a location with some less-strict variables. There may be safety or hazard issues that prevent the user from remaining at the location long enough to meet the preferred requirements. In this case, a warning is shown and the user can decide to capture the location or wait longer.

The following absolute minimum accuracy requirements are set by the survey author:

  • Horizontal accuracy with 95 percent CI is less than two meters.
  • Vertical accuracy with 95 percent CI is less than two meters.
  • Position Dilution of Precision (PDOP) is less than or equal to 6.0.
  • Five or more satellites are used.

The following preferred accuracy requirements are set by the survey author:

  • Horizontal accuracy with 95 percent CI is less than one meter.
  • Vertical accuracy with 95 percent CI is less than one meter.
  • PDOP is less than or equal to 2.0
  • Seven or more satellites are used.

The following calculation is used in a question named haccuracy68cep:

pulldata("@geopoint", ${location}, "horizontalAccuracy")

Then the following calculation is used in a question named haccuracy95ci:

${haccuracy68cep} * 1.7308

With similar calculations made for vertical accuracy, the following expression is entered in the constraint column to represent the absolute minimum accuracy:

${accuracyType} = 0 and ${haccuracy95ci} < 2 and ${vaccuracy95ci} < 2 and ${pdop} <= 6 and ${satellitesInUse} >= 5

The following expression is entered in the bind::esri:warning column to represent the preferred accuracy. The values used here are typically smaller than those used for the absolute minimum accuracy. Smaller values are preferred, but the larger minimum values can be used.

${accuracyType} = 0 and ${haccuracy95ci} < 1 and ${vaccuracy95ci} < 1 and ${pdop} <= 2 and ${satellitesInUse} >= 7

3D feature layers

By default, Survey123 geopoint questions don't support z-axis (altitude) values; they only capture latitude and longitude in a two-dimensional feature layer. You can change this by entering esriFieldTypePointZ in the bind::esri:fieldType field of the question, which enables the altitude value to be captured in the feature layer. This also allows the altitude field to be altered when specifying a geopoint value.

Defaults

A default location can be set for a geopoint question by providing a space-separated set of latitude and longitude values (in decimal degrees) in the default column. For example, -37.814552 144.966071 causes the geopoint question to default to a location in Melbourne, Australia.

Tip:

Location defaults in the southern hemisphere cause an error in Microsoft Excel, as the value is read as a formula because it begins with a minus sign (-). In these cases, enter an apostrophe before the first value, and it will be read as intended in Excel. Adding an apostrophe causes no change in behavior in Survey123.

If a default is not provided, the geopoint question automatically updates to the device's current location. To prevent this, set the default value as null. The geopoint question will then display options to enable location capture, load the map page for manually setting a location, or refresh a calculation if there is a calculation applied.

Geopoint questions that are switched from a non-relevant to a relevant state will not automatically update to the device's location. Set the default value as position to automatically get the current location identified by the device when the question is made relevant.

Geopoint questions contained within surveys that are launched from Inbox, Drafts, or Outbox will not automatically update to the device's current location. Set the default value as position to automatically get the current location identified by the device when the survey is opened from a folder.

Calculations

You can populate a geopoint question using the results of other questions. The answer of a geopoint question is formatted as a space-separated list of latitude and longitude (in decimal degrees) values followed by optional values, starting with altitude and accuracy (in meters). To populate the answer of a geopoint question, you must adhere to this structure to produce a valid answer.

Because you can't do this directly when populating from select_one questions, it's recommended that you use the substr() function to help construct a valid answer. For example, the name of the geopoint can be the following:

+059.38330_+018.00000

This value uses a fixed amount of characters for both latitude and longitude, including zeroes that would normally be truncated with an underscore between the two values, as spaces are not permitted in the name column. This creates a value that can be deconstructed with the substr() function to populate the following example of a geopoint question:

concat(substr(${LocationValue}, 0, 10), " ", substr(${LocationValue}, -10))

This example takes the first 10 characters of the value (the latitude) and the last 10 characters (the longitude value) and presents them separated by a space to produce a valid geopoint result.

You can also use the pulldata() function to populate a geopoint question using an attached .csv file. First add the .csv file to the survey's media folder. Then add something similar to the following to the calculation column:

pulldata('Intersections', 'Lat', 'IntersectionID', ${intersection}) + " " + pulldata('Intersections', 'Long', 'IntersectionID', ${intersection})

As with the substr() example, this combines the latitude and longitude values of a location with a space to create a valid answer for a geopoint question based on a previous question.

See examples of both of these calculations in the samples in Survey123 Connect.

Required and read-only

Geopoint questions automatically populate a survey with a location provided by the device if one is available. If the device doesn't provide a valid location in its survey response, Survey123 returns a location of 0,0, which is in a stretch of ocean off the coast of Africa. Marking the geopoint question as required prevents the survey from being submitted with this null value, and the survey is accepted once the device provides a location or a location is manually submitted.

Marking a geopoint question as read-only prevents the entering of manual answers. This can be useful for questions in which an automatic response is necessary, and a manual response would cause issues with the data set. It's recommended that you use it with one of the calculations described above, which provides a discrete geopoint value that users cannot alter.

Geosearch and geocode

Geopoint questions include geosearch functionality, allowing users to search for an address or point of interest and have the map zoom to and place the geopoint marker at this location.

By default, the geosearch functionality returns results from the entire world, using the ArcGIS World Geocoding Service to search for the addresses.

By default, geosearch returns results from the entire world, using the ArcGIS World Geocoding Service to search for the addresses. Signed in users will also see all of the organizations Configured geocoding services.

Note:
Geocoding using the ArcGIS World Geocoding Service will consume credits. For more information, see Understand credits.

To set a specific locator to return results from, supply the locator's item ID in the bind::esri:parameters column, for example, geocode=36ff9e8c13e042a58cfce4ad87f55d19. A locator used in an ArcGIS Online survey must be an item in ArcGIS Online. A locator used in an ArcGIS Enterprise survey must be an item in the same portal as the survey.

You can also set a question to only perform geocoding by adding a text question with the geocode appearance. For more information, see Geocode appearance.

Reverse geocoding

Reverse geocoding can be performed in the field app by long pressing the map or coordinates when the full geopoint view is opened, but this is not saved and submitted to the survey. The reverse geocoded value can be obtained from the geopoint using pulldata("@geopoint", ${location}, "reversegeocode"), which returns the location as a JSON object. Individual properties from the object can be extracted by providing the name of the property, but these properties differ depending on the locator used. In the case of the ArcGIS World Geocoding Service, a JSON object similar to the following is returned:

{
	"address": {
		"Match_addr": "207-361 Flinders St, Melbourne, Victoria, 3000",
		"LongLabel": "207-361 Flinders St, Melbourne, Victoria, 3000, AUS",
		"ShortLabel": "207-361 Flinders St",
		"Addr_type": "StreetAddress",
		"Type": "",
		"PlaceName": "",
		"AddNum": "283",
		"Address": "283 Flinders St",
		"Block": "",
		"Sector": "",
		"Neighborhood": "Melbourne",
		"District": "Melbourne",
		"City": "Melbourne",
		"MetroArea": "",
		"Subregion": "",
		"Region": "Victoria",
		"RegionAbbr": "VIC",
		"Territory": "",
		"Postal": "3000",
		"PostalExt": "",
		"CntryName": "Australia",
		"CountryCode": "AUS"
	},
	"location": {
		"x": 144.96721048751365,
		"y": -37.81768543612741,
		"spatialReference": {
			"wkid": 4326,
			"latestWkid": 4326
		}
	}
}

To extract a specific value from the JSON object, use a pulldata("@geopoint") function similar to the following, which extracts the Match_addr property:

pulldata("@geopoint", ${location}, "reversegeocode.address.Match_addr")

The default geocode service for your organization is used when reverse geocoding. To use a different geocode service, enter the locator URL as an optional parameter in the function with the format pulldata("@geopoint", ${location}, "reversegeocode", ${locatorURL}). If the service is secured, or the survey is intended for public users, a proxy item must be configured with access credentials saved in it.

If a locator URL is provided, additional parameters can be provided that will be passed to the URL. As with the properties provided with the JSON object, these parameters differ depending on the geocode service used. The following example uses the featureTypes parameter, which limits the value returned to a specific type of location to return only the nearest business or landmark:

pulldata("@geopoint", ${location}, "reversegeocode.address.Match_addr", "https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer", "featureTypes=POI")
Tip:

If the default geocode service for your ArcGIS Enterprise deployment is the ArcGIS World Geocoding Service, or if the ArcGIS World Geocoding Service is used as the locator URL parameter on an enterprise survey as in the steps above, you may receive a token error when performing reverse geocoding. To avoid this, create a proxy item that has ArcGIS Online access credentials saved in it for a user with permissions to perform geocoding. This item can then be set as either the default geocode service for a portal or the destination for a locator URL parameter in the reverse geocoding function.

For more information about reverse geocoding URL parameters, including a full list of parameters that can be passed to the URL, see reverseGeocode in the ArcGIS REST API documentation.

You can include multiple reverse geocoding calculations without impacting performance or credits. For example, the following three calls for individual properties could be included:

pulldata("@geopoint", ${location}, "reversegeocode.address.Match_addr")

pulldata("@geopoint", ${location}, "reversegeocode.address.LongLabel")

pulldata("@geopoint", ${location}, "reversegeocode.address.ShortLabel")

Reverse geocoding is performed for the first calculation, which consumes credits. Then the response is cached and used for the other two calculations. A new call to the geoservice is only required if the reverse geocoding request URL has changed due to a change in location, a different request parameter being used, or the original access token expiring.

Configure a proxy locator item

To configure a proxy locator item, follow these steps:

  1. Sign in to your ArcGIS organization with an account that has geocoding privileges.
  2. On the Content page, browse to Add Item > From a URL for ArcGIS Online or Add Item > From the web for ArcGIS Enterprise, and ensure that the selected type is ArcGIS Server web service.
  3. Use the URL for the intended locator, for example, https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer for the ArcGIS World Geocoding Service.

    This will be detected as a secured service.

  4. Add a username and password for an ArcGIS account with geocoding privileges.
  5. Choose Store credentials with service item. Do not prompt for authentication.
  6. Provide a title and tags.
  7. Click Add Item.
  8. Share this online locator item publicly.

For more information, see Requirements for configuring your own locators for ArcGIS Online or Configure utility services with your portal for ArcGIS Enterprise.

Extract geopoint values

To deconstruct a geopoint answer, you can use the pulldata("@geopoint") function to extract the values to populate the values of other questions. The following example extracts the horizontal accuracy value from a geopoint question:

pulldata("@geopoint", ${location}, "horizontalAccuracy")

The availability of geopoint properties is hardware dependent. The following table lists properties that can be pulled from a geopoint:

Property nameDescriptionUnit

x

Longitude: a positive value in the eastern hemisphere and a negative value in the western hemisphere.

Decimal degrees

y

Latitude: a positive value in the northern hemisphere and a negative value in the southern hemisphere.

Decimal degrees

z

Altitude, meters above sea level (default), or height above ellipsoid (if selected in field app settings).

Meters

horizontalAccuracy

Horizontal accuracy of the x- and y-coordinates.

Meters

verticalAccuracy

Vertical accuracy of the z-coordinate.

Meters

speed

Ground speed.

Meters per second

verticalSpeed

Vertical speed.

Meters per second

direction

Direction of travel measured clockwise from north.

Decimal degrees

positionSourceType

Category of the position source. Potential results are Unknown (0), User (1), System Location (2), External Device (3), Network Device (4), and File (5).

N/A

positionSourceInfo.antennaHeight

Height of the device's antenna. The distance from the antenna to the ground surface is subtracted from altitude values.

Meters

positionSourceInfo.altitudeType

Selected altitude type. Potential results are altitude above mean sea level (0) and height above ellipsoid (1). This is available for all location provider types.

N/A

The following table lists additional properties that can be pulled from a geopoint captured with a high-accuracy receiver:

Property nameDescriptionUnit

magneticVariation

Angle between magnetic and true north.

Decimal degrees

fixType

Type of position fix of the coordinate. Potential results are NoFix (0), GPS (1), DifferentialGPS (2), PrecisePositioningService (3), RTKFixed (4), RTKFloat (5), Estimated (6), Manual (7), Simulator (8), and SBAS (9).

N/A

positionSourceInfo

Device information as a JSON object. It is useful for debugging and validation. Individual elements can also be returned using the full element name. See the table rows below for all available elements.

N/A

positionSourceInfo.pluginName

Name of the internal position source. This is only available for the integrated location provider of the device.

N/A

positionSourceInfo.deviceAddress

Address of the device. This is only available for external GNSS receivers.

N/A

positionSourceInfo.deviceName

Name of the device. This is only available for external GNSS receivers.

N/A

positionSourceInfo.deviceType

Type of external device. Potential results are Unknown (-1), Bluetooth (0), Serial Port (1), and Bluetooth LE (2). This is only available for external GNSS receivers.

N/A

positionSourceInfo.networkName

Name of the network position source. This is only available for network location providers.

N/A

positionSourceInfo.networkAddress

Address of the network position source. This is only available for network location providers.

N/A

positionSourceInfo.networkPort

Port of the network position source. This is only available for network location providers.

N/A

positionSourceInfo.geoidSeparationCustom

Difference between the WGS-84 earth ellipsoid and mean sea level as defined by the user in the app settings.

Meters

geoidSeparation

Difference between the WGS-84 earth ellipsoid and mean sea level as reported by the GNSS receiver. This is sometimes referred to as orthometric height.

Meters

accuracyType

Type of accuracy reported by the horizontalAccuracy and verticalAccuracy properties. Potential results are RMS (0) and DOP (1). RMS is root mean square accuracy. This is calculated based on a 68 percent confidence interval for latitude, longitude, and altitude errors reported in the GST sentence provided by the receiver. If the receiver does not support GST, DOP is used instead. DOP is dilution of precision-based accuracy. This uses a constant user-estimated range error (UERE) value to estimate horizontal and vertical accuracies.

N/A

positionAccuracy

Mean radial spherical error. It encompasses both horizontal and vertical error.

Meters

latitudeError

Value of latitude 1-sigma error. This property is only populated when the positioning device supports GST sentences in NMEA streams.

Meters

longitudeError

Value of longitude 1-sigma error. This property is only populated when the positioning device supports GST sentences in NMEA streams.

Meters

altitudeError

Value of altitude 1-sigma error. This property is only populated when the positioning device supports GST sentences in NMEA streams.

Meters

hdop

Position data's Horizontal Dilution of Precision (HDOP).

N/A

vdop

Position data's Vertical Dilution of Precision (VDOP).

N/A

pdop

Position data's Position Dilution of Precision (PDOP). The equation used to determine PDOP is PDOP^2 = HDOP^2 + VDOP^2.

N/A

differentialAge

Age of the differential signal and correction used by the GPS receiver to differentially correct the position.

Seconds

referenceStationId

Differential reference station ID (DSID) of the station used by the GPS receiver.

N/A

satellitesVisible

Number of positioning satellites visible at the time of location capture.

N/A

satellitesInUse

Number of positioning satellites being used to return the position data.

N/A

Coordinate format

The pulldata("@geopoint") function can also be used to extract geopoint values and format them into additional coordinate formats:

  • pulldata("@geopoint", ${location}, "DMS") returns the geopoint as degrees, minutes, and seconds. This is returned as a JSON object:
    {
    	"latitudeDegrees": 39,
    	"latitudeHemisphere": "N",
    	"latitudeMinutes": 57,
    	"latitudeSeconds": 36.3,
    	"latitudeText": "39°57'36.3\"N",
    	"longitudeDegrees": 116,
    	"longitudeHemisphere": "E",
    	"longitudeMinutes": 27,
    	"longitudeSeconds": 4,
    	"longitudeText": "116°27'04.0\"E",
    	"text": "39°57'36\"N 116°27'4\"E"
    }
    These individual values can be extracted using additional parameters. For example, pulldata("@geopoint", ${location}, "DMS.latitudeMinutes") returns only the latitude minutes.
  • pulldata("@geopoint", ${location}, "DDM") returns the geopoint as degrees and decimal minutes, and pulldata("@geopoint", ${location}, "DD") returns the geopoint as decimal degrees. These are also returned as JSON objects and can have individual values extracted with additional parameters in the same manner as the degrees, minutes, and seconds format above.

The following coordinate formats can be used with an optional precision parameter, producing a decimal value that is a power of 10—for example, 0.01, 0.1, 1, 10, or 100.

  • pulldata("@geopoint", ${location}, "MGRS") returns the geopoint as a Military Grid Reference System (MGRS) grid value with a precision of 1 meter. By providing the optional precision parameter, the precision can be changed. For example, pulldata("@geopoint", ${location}, "MGRS", 100) returns a grid value with a precision of 100 meters.
  • pulldata("@geopoint", ${location}, "USNG") returns the geopoint as a United States National Grid (USNG) grid value with a precision of 1 meter.
  • pulldata("@geopoint", ${location}, "UTM") returns the geopoint as Universal Transverse Mercator (UTM) coordinates with a precision of 1 meter. This is returned as a JSON object:
    {
    	"band": "S",
    	"easting": 452994,
    	"northing": 4423429,
    	"text": "50S 452994E 4423429N",
    	"type": "UTM",
    	"zone": 50
    }
    These individual values can be extracted using additional parameters. For example, pulldata("@geopoint", ${location}, "UTM.easting", 0.01) returns only the easting value with a precision of 1 centimeter.

Geopoint symbology

A geopoint question can display a custom symbol for the point marker on the map using the symbol parameter in the body::esri:style column of a survey. The parameter must provide the file name of the custom symbol, which must be a .png file in the survey's media folder. See the following example:

symbol=hydrant.png

The symbol parameter accepts optional parameters to configure the display of the symbol on the map. Separate these parameters from the file name with a question mark and from each other with ampersands (&). For example, the symbol parameter can have x, y, and scale properties, as follows:

symbol=hydrant.png?x=0.2&y=0.7&scale=2

  • The x parameter specifies the symbol's horizontal anchor point. It accepts a value between 0 (representing the left edge of the image) and 1 (representing the right edge). If not defined, the default value is 0.5.
  • The y parameter specifies the symbol's vertical anchor point. It accepts a value between 0 (representing the top edge of the image) and 1 (representing the bottom edge). If not defined, the default value is 1.
  • The scale parameter specifies the scale at which the image is displayed. Values below 1 scale the image down, while values above 1 scale the image up.
Symbol style for geopoint

The value provided can be either a constant or a reference to a question, for example, symbol=${symbol_question}. Inline expressions are not supported.

Point overlays on maps

Point locations from the first geopoint question in a repeat can be displayed on any map question in a survey by setting the body::esri:style column for a geopoint, geotrace, or geoshape question to overlay=repeat_name. All points captured for the first geopoint question in that repeat are displayed on the map. Additional parameters can be used to customize the overlay symbology.

The following optional parameters are supported by the overlay style and can be separated by an ampersand, for example, overlay=repeat_name&preview=true:

ParameterDescriptionExample

view

Show overlay points on the map question. The default value is true.

view=false

preview

Show overlay points on the preview map. The default value is false.

preview=true

icon

The name of the point symbol to use for map pins. Review the available symbols in the Point Symbols library in the Esri Developer documentation.

icon=esri_pin_two

iconColor

The color of the icon used for map pins. This parameter accepts either a standard color name or a hex color code. The default value is black.

iconColor=Blue

iconOutlineColor

The color of the outline used for map pins. This parameter accepts either a standard color name or a hex color code. The default value is white.

iconOutlineColor=#FF4500

iconSize

The size of the icon as it appears on the map. The default value is 30.

iconSize=40

label

The survey question name to use as a label.

label=question_name

labelColor

The color of the label for a point. This parameter accepts either a standard color name or a hex color code. The default value is black.

labelColor=#FFD700

labelOutlineColor

The color of the outline of the label. This parameter accepts either a standard color name or a hex color code. The default value is white.

labelOutlineColor=Black

fontSize

The font size of the label for a point. The default value is 13.

fontSize=16

Question style

You can configure the basemap, map tools, and question height for map questions.

A default basemap can be set for individual map questions using the map parameter in the body::esri:style column. For example, map="World Topography" will set the map question to use the World Topography basemap. You can also set the map parameter using the map's item ID, for example, map=de26a3cf4cc9451298ea173c4b324736. This parameter supports online and offline maps, including your own web maps. For more information, see Include a map in a survey.

The body::esri:style column accepts a mapTools parameter to control the map tools that are available for map questions. If no map tool parameter is set, all tools will be displayed. The following values are accepted:

  • mapTools=search
  • mapTools=mapSwitcher
  • mapTools=zoom
  • mapTools=home
  • mapTools=locate

Multiple tools can be set by separating each value with a comma, for example, mapTools=search,locate.

The body::esri:style column accepts a height parameter for map questions.

You can set the height for a question by supplying the height parameter with a number and, optionally, a unit. The default unit is lines, referring to the height of the current input text font. For example, height=5 causes any of these questions to display five lines tall.

Alternatively, you can set the unit to a percentage of the screen height, or by number of pixels, by adding them as a suffix to the value without a space. For example, the following values are all accepted:

  • height=5
  • height=5lines
  • height=25%
  • height=250pixels

Height and map tools can be set with a space between them, for example, height=25% mapTools=search,zoom.

Note:
Controlling the height and map tools of questions is not supported in the Survey123 web app.