I am trying to determine how to create a popup Media Group of images from an Arcade array of image URLs. The images are not stored as attachments, but as a list of URLs in a field. I have been able to successfully parse the list and display the images using rich text with HTML tags, but I would prefer to have the look of a media group (i.e. with forward/backward arrows).
I know that JSON for a media group is generally of the following format:
{
"type": "media",
"description": "",
"mediaInfos": [
{
"altText": "",
"caption": "",
"title": "",
"type": "",
"value": {
"linkURL": "",
"sourceURL": ""
}
},
{
"altText": "",
"caption": "",
"title": "",
"type": "",
"value": {
"linkURL": "",
"sourceURL": ""
}
}.......]
}
Would the best approach be to simply build a JSON representation for the media group and then return the results of calling "FromJSON" on it? (https://developers.arcgis.com/arcade/function-reference/data_functions/#fromjson) Would that actually work to display a media group in the popup? Thanks in advance for any input or ideas.
Andrew
Solved! Go to Solution.
I ended up coming up with the following solution, posting in case it might help anyone else:
var contents = Split($feature.photourls, ',', -1, TRUE)
var imageArray = []
if (Count(contents) > 0) {
for (var i in contents) {
var value = Dictionary("sourceURL", contents[i])
var image = Dictionary("type", "image","value", value)
Push(imageArray, image)
}
var imageDict = Dictionary("type","media","description", "Media Group Photos", "mediaInfos",imageArray)
return imageDict
} else {
return Dictionary("type","text","text","No Photos to Display")
}
I ended up coming up with the following solution, posting in case it might help anyone else:
var contents = Split($feature.photourls, ',', -1, TRUE)
var imageArray = []
if (Count(contents) > 0) {
for (var i in contents) {
var value = Dictionary("sourceURL", contents[i])
var image = Dictionary("type", "image","value", value)
Push(imageArray, image)
}
var imageDict = Dictionary("type","media","description", "Media Group Photos", "mediaInfos",imageArray)
return imageDict
} else {
return Dictionary("type","text","text","No Photos to Display")
}