Использование параметров URL

Приложения, созданные с помощью Web AppBuilder, можно изменять, используя параметры URL. URL-адрес всегда начинается с <your portal url>/apps/webappviewer/index.html? и включает один или несколько перечисленных ниже параметров. Чтобы включить более одного параметра, используйте знак амперсанта (&) для разделения параметров. Ниже приведен пример:

http://<your portal url>/apps/webappviewer/index.html?id=6815e148ff1c4aee8dc7159816380a4d&webmap=9cf053ea602345ddae060010c470e615
Подсказка:

Теперь есть более простой способ конструировать параметры URL. Добавьте в приложение виджет Опубликовать и щелкните Опции ссылки. Предварительный просмотр ссылки отображает выбранные вами параметры, короткая ссылка с параметрами URL генерируется для вас автоматически. Имейте в виду, чтобы использовать параметр find, виджет Поиск должен быть включен в приложении.

Примечание:

В настоящее время 3D-приложения не поддерживают параметры URL.

Кодирование параметров запроса

Все параметры запроса должны быть закодированы. Кодировка заменяет некорректные символы знаком %, за которым следует их шестнадцатеричный эквивалент.

Например, так выглядит незакодированный параметр URL:

http://<your portal url>/apps/webappviewer/index.html?find=380 new york street, redlands, ca

А так выглядит тот же параметр после кодирования:

http://<your portal url>/apps/webappviewer/index.html?find=380%20new%20york%20street,%20redlands,%20ca

В Интернете вы можете найти множество бесплатных сайтов и инструментов для создания закодированных адресов URL. Например, на сайте Albion Research Ltd. имеются страницы URLEncode и URLDecode. Для удобства чтения остальные примеры в данном разделе не закодированы.

Открытие сохраненного приложения

Чтобы открыть сохраненное приложение, которое было создано с помощью Web AppBuilder, необходимо использовать id= и уникальный ID этого приложения, как показано в следующем примере:

http://<your portal url>/apps/webappviewer/index.html?id=6815e148ff1c4aee8dc7159816380a4d

Определение веб-карты

Чтобы задать веб-карту, используйте webmap= и уникальный ID этой веб-карты, как показано в следующем примере:

http://<your portal url>/apps/webappviewer/index.html?webmap=9cf053ea602345ddae060010c470e615

Центрирование карты

Чтобы центрировать карту в определенном местоположении, установите center=, используя географические координаты (x,y) или координаты проекции (x,y,WKID).

Внимание:

В качестве разделителей вы можете использовать запятые или точки с запятой. Используйте точки с запятой, если для десятичных разделителей в ваших числах используется двоеточие.

Ниже приведен пример географических координат:

http://<your portal url>/apps/webappviewer/index.html?center=34,-50

Ниже приведен пример координат проекции:

http://<your portal url>/apps/webappviewer/index.html?center=500000,5500000,102100

Задание уровня масштабирования

Чтобы задать уровень масштаба карты, используйте параметры center= и level=. Параметр level принимает ID уровня масштаба кэширования, который указывается в конечной точке REST картографического сервиса. Ниже приведен пример:

http://<your portal url>/apps/webappviewer/index.html?center=20,45&level=4

Указание масштаба

Чтобы задать масштаб карты, используйте параметры center= и scale=. Параметр scale принимает масштаб кэша, который указывается в конечной точке REST картографического сервиса. Ниже приведен пример:

http://<your portal url>/apps/webappviewer/index.html?center=20,45&scale=4622324

Определение экстента

Для задания экстента карты используйте extent=. Параметр extent принимает географические координаты (GCS) как MinX,MinY,MaxX,MaxY, координаты проекции (PCS) как MinX,MinY,MaxX,MaxY,WKID или координаты в текстовом формате Well-Known Text String (WKT) как MinX,MinY,MaxX,MaxY,WKT. В качестве разделителей вы можете использовать запятые или точки с запятой. Используйте точки с запятой, если для десятичных разделителей в ваших числах используется двоеточие.

Ниже приведен пример географических координат:

http://<your portal url>/apps/webappviewer/index.html?extent=-117.20,34.055,-117.19,34.06

Ниже приведен пример координат проекции:

http://<your portal url>/apps/webappviewer/index.html?extent=-13079253.954115,3959110.38566837,-12918205.318785,4086639.70193162,102113

Ниже приводится пример формата Well-Known Text String (WKT):

http://<your portal url>/apps/webappviewer/index.html?extent=1008562.1255,1847133.031,1060087.7901,1877230.7859,wkt=PROJCS["NAD_1983_HARN_StatePlane_Illinois_East_FIPS_1201",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]]

Задание видимости слоев

Чтобы настроить видимость слоев карты, вы можете использовать showLayers= для указания видимых слоев, либо использовать hideLayers= для отключения отображения слоев. Параметры showLayers= и hideLayers= могут принимать один или несколько ID слоев. Для нескольких слоев используйте точку с запятой для разделения списка идентификаторов (&showLayers=<layerID>;<layerID>;<layerID>).

Ниже приведен пример: http://<your portal url>/apps/webappviewer/index.html?id=da80a448ac9246148da0811bddc18c94&showLayers=Census_8491;Census_8492;Census_8493.

Также принимаются имена слоев. Однако использование идентификатора слоя более надежно, поскольку имя слоя может быть изменено. Можно получить ID слоя из содержания элемента веб-карты: http://<your portal url>/sharing/rest/content/items/<webmapItemID>/data/?f=pjson.

Когда вы используете параметры showLayers= или hideLayers= для установки видимости подслоя, это влияет только на видимость слоев на том же уровне. Например, если ваша карта содержит два составных слоя (A и B) с тремя подслоями в каждом (A1, A2, A3 и B1, B2, B3), и вы используете параметр showLayers= для отображения подслоя B2, оба групповых слоя A и B все равно будут включены на карте, но подслои B1 и B3 будут выключены.

Подсказка:

Если значение параметра showLayers= или hideLayers= пусто, будут отображаться, соответственно, ни один слой или все слои.

Внимание:

Если при установке параметра showLayers= или hideLayers= вы перечисляете много слоев или у них длинные имена, URL-адрес может быть слишком длинным для интерпретации сервером. (Различные серверы могут иметь свои уникальные ограничения для длины URL-адресов.)

Поиск местоположения или объекта для открытия карты

Чтобы найти местоположение или объект, использующиеся для открытия карты, используйте find=. Карта автоматически масштабируется до ближайшего совпадения, кроме того, к ней добавляется маркер выноски. Параметр find принимает однострочные адреса, частичные адреса (только город или только страна), названия мест, координаты широты-долготы и объекты в слоях с возможностью поиска (например, 1916352001 в качестве Parcel Identification Number (PIN)). Ниже приведен пример:

http://<your portal url>/apps/webappviewer/index.html?find=380 new york street, redlands, ca
Внимание:

Все параметры запроса должны быть закодированы, чтобы использовать этот параметр, виджет Поиск должен быть включен в приложении.

Добавление точки

Чтобы добавить точку на карту, используйте marker=<x>,<y>. Точка будет добавлена на карту с указанными координатами x и y. Вы также можете настроить следующие необязательные параметры:

  • <wkid> – пространственная привязка координат x,y добавленной на карту точки. Если вы не укажете WKID, то будут использоваться координаты географической системы координат (GCS).
  • <encoded title> – заголовок всплывающего окна точки. Если вы не укажете заголовок, то всплывающее окно будет пустым.
  • <encoded icon URL> – символ точки. Если вы не укажете символ, то используется символ синего маркера.
  • <encoded label> – надпись рядом с символом точки.

Следует учитывать следующее:

  • <x>,<y> являются обязательными.
  • Обязательно используйте параметры заголовок, значок и надпись.
  • Необходимо добавлять параметры в следующем порядке: marker=<x>,<y>,<wkid>,<encoded title>,<encoded icon URL>,<encoded label>.
  • В качестве разделителей вы можете использовать запятые или точки с запятой. Используйте точки с запятой, если для десятичных разделителей в ваших числах используется двоеточие.
  • Используйте пустые значения. Не используйте пробелы. Например, если вы хотите указать из необязательных параметров только надпись, то добавьте надпись шестым по счету параметром, а для остальных параметров используйте пустое значение (x;y;;;;label).
  • Если вы хотите отобразить карту в определенном масштабе (помимо центрирования в точке), то включите также параметр level=.

Ниже приведен пример:

http://<your portal url>/apps/webappviewer/index.html?marker=-79.234826;38.147884;;Race start and finish;;Grindstone 100 Ultra Marathon&level=7

Запрос объекта

Чтобы запросить объект и приблизиться к нему, можно использовать одну из следующих опций:

  • query=<layer name>,<field name>,<field value>
  • query=<layer name>, <where clause>
  • query=<layer id>,<field name>,<field value>
  • query=<layer id>, <where clause>
Подсказка:

Теперь есть интерактивный способ конструировать параметры URL. Добавьте в приложение виджет Опубликовать и щелкните Опции ссылки. Выберите опцию Создайте запрос объекта и приблизьтесь к нему и выберите слой, поле и значение поля, к которому вы хотите снова выполнить запрос. Скопируйте URL в окне Предварительный просмотр ссылки где находятся заданный вами параметры URL. Удалите виджет Опубликовать из приложения, если он не нужен.

Внимание:

Все параметры запроса чувствительны к регистру и должны быть кодированы.

Условие WHERE соответствует стандарту SQL. Если условие WHERE содержит, к примеру, операцию IN, используйте для разделения имени или ID слоя из условия WHERE точку с запятой вместо запятых, как показано ниже. Причина в том, что запятая используется в условии WHERE специально для построения списка таких значений, как ('A11', 'A12', 'A13) или ('Charlotte', 'Chicago'). Это позволяет правильно проанализировать параметр запроса, чтобы отличить условие layer от WHERE.

  • query=<layer name>; <where clause>
  • query=<layer id>; <where clause>

Поскольку имя слоя может быть изменено, настоятельно рекомендуется использовать в запросе ID слоя. Можно получить ID слоя из ID веб-карты как показано ниже: http://<your portal url>/sharing/rest/content/items/32a83775654249dcae6b8f2eff5d4072/data/?f=pjson

Внимание:

Убедитесь, что веб-карта опубликована для общего доступа при получении ID слоя.

Например, слой добавляется на карту в отдельности, как показано ниже в формате JSON. ID слоя – Census_8491, имя поля – POP2000, а значение – 1211537. Вы можете выполнить следующие запросы:

id: "Census_8491",
layerType: "ArcGISFeatureLayer",
url: "http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/3",
visibility: true,
opacity: 1,
mode: 1,
title: "Census - states",

http://<your portal url>/apps/webappviewer/index.html?id=da80a448ac9246148da0811bddc18c94&query=Census_8491,POP2000,1211537
http://<your portal url>/apps/webappviewer/index.html?id=da80a448ac9246148da0811bddc18c94&query=Census_8491,POP2000=1211537

Вы можете также выполнить запрос к текстовому полю или полю ObjectID.

http://<your portal url>/apps/webappviewer/index.html?id=da80a448ac9246148da0811bddc18c94&query=Census_8491,STATE_NAME,California
http://<your portal url>/apps/webappviewer/index.html?id=da80a448ac9246148da0811bddc18c94&query=Census_8491,STATE_NAME='California'
http://<your portal url>/apps/webappviewer/index.html?id=da80a448ac9246148da0811bddc18c94&query=Census_8491,OBJECTID,1

Часто слой добавляется как группа картографического сервиса. Для выполнения запроса к подслою группы используйте <layer id_sublayer id> в качестве ID слоя. При использовании следующего слоя в качестве примера, его ID будет Census_3217, а ID подслоя – 3. ID слоя для подслоя будет Census_3217_3. Вы можете выполнить следующие запросы:

id: "Census_3217",
layerType: "ArcGISMapServiceLayer",
url: "http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer",
visibility: true,
opacity: 1,
title: "Census"

http://<your portal url>/apps/webappviewer/index.html?id=da80a448ac9246148da0811bddc18c94&query=Census_3217_3,POP2000,1211537
http://<your portal url>/apps/webappviewer/index.html?id=da80a448ac9246148da0811bddc18c94&query=Census_3217_3,POP2000=1211537
http://<your portal url>/apps/webappviewer/index.html?id=da80a448ac9246148da0811bddc18c94&query=Census_8491;STATE_NAME in ('California', '')

Переключение языка

Чтобы переключить язык приложения, используйте параметр URL locale и двухбуквенный код языка ISO 639-1. В Web AppBuilder поддерживаются все языки, которые поддерживаются в ArcGIS Online, включая следующие языковые коды: ar, bg, bs, ca, cs, da, de, el, en, es, et, fi, fr, he, hr, hu, id, it, ja, ko, lt, lv, nb, nl, pl, pt-br, pt-pt, ro, ru, sk, sl, sr, sv, th, tr, uk, vi, zh-cn, zh-hk, and zh-tw.

Чтобы использовать Web AppBuilder на французском языке, например, добавьте locale=fr к URL-адресу:

http://<your portal url>/apps/webappviewer/index.html?locale=fr

Управление мобильной компоновкой

В зависимости от размера экрана в приложении поддерживается два стиля компоновки. Один для настольных и другой для мобильных устройств. Если высота или ширина экрана менее 600 пикселов, автоматически применяется компоновка для мобильных устройств. Однако это может привести к неожиданному поведению при встраивании приложения в веб-сайт, например, когда во всплывающем окне веб-сайта используется мобильный стиль компоновки. Для управления стилем компоновки используйте mobileBreakPoint=<pixel number>. Например, вы можете продолжать работать в стиле настольного приложения до тех пор, пока размер экрана не станет менее 300 пикселов, как показано ниже:

http://<your portal url>/apps/webappviewer/index.html?mobileBreakPoint=300