Design and deploy a custom symbol
The USA Current Wildfires layer uses a round symbol with a simple flame shape inside. To begin this tutorial, you'll learn about the considerations that led to the design of this symbol.
Consider a symbol's design needs
The goal of any map symbol is to communicate quickly, clearly, and intuitively. To design such a symbol, you must consider its design needs. You should ask questions such as What is the purpose of this data? and Who is the audience?
The symbol that you'll use in this tutorial has already been created using graphics software.
![Red circle symbol with a white flame shape inside Red circle symbol with a white flame shape inside](GUID-2B112F12-339A-43E1-A25D-B507BFA6B86A-web.png)
Before you begin mapping with this symbol, you'll watch a video to learn about the functionality considerations that led to its design. Understanding this example of the purpose and needs of a symbol will help you design and choose more effective ones for your own maps.
Thinking carefully about the color, clarity, and communication of your map symbols will help them be viewable and understandable by a variety of users.
Creating your own symbols in ArcGIS Online will allow your maps to be unique and specific to your needs. You've learned about possible design considerations for a custom symbol and some methods for addressing them. Next, you'll download and apply the custom flame symbol to the USA Current Wildfires dataset.
Map live-feed wildfire data by type and by scale
You won't map every fire incident with the same symbol. You'll use a few different color and size variations of the symbol to provide map readers with more information. You'll show them where the fires are, what kind they are, which ones are new, and for the established fires, how big they are.
You'll also control each symbol's size as the map zooms in and out so the symbols are sized appropriately for every scale.
Download the wildfire symbol and save a copy of wildfire map
You'll download a copy of the wildfire symbol for later use, then save a version of the USA Current Wildfires map that was prepared for this tutorial that you can edit.
- Download the fire symbol.
This is the symbol for United States wildfire incidents that have occurred in the past 24 hours.
- Open the USA Current Wildfires web map.
The USA Current Wildfires web map appears in Map Viewer. The map shows red markers, mostly in the western United States.
Next, you will save your own copy of this map.
- Sign in to your ArcGIS organizational account.
Note:
If you don't have an organizational account, see options for software access.
- On the Contents (dark) toolbar, click the Save and open button and choose Save as.
- In the Save map window, for Title, type USA Current Wildfires and add your name or initials. Accept the existing text for the Tags and Summary.
- Click Save.
Classify by wildfire type
The USA Current Wildfires layer doesn't have the specific fields that you need to generate the symbol classes that you want. You'll use ArcGIS Arcade to define the symbol categories that you need. With Arcade, you create custom categories on the fly, without adding fields.
You'll write an Arcade expression that uses three fields from the attribute table to define eight custom symbol classes that are based on the type, the age, and the size of the fires.
- On the Contents toolbar, click Layers.
There are three thematic layers in the map, but only one of them is currently visible: Sept 1, 2021. This layer is an archived version of the live-feed layer. It was captured on September 1, 2021, during a particularly dire western wildfire season, and contains the full range of data values needed to build a complete symbology set.
You'll work with the live data layer later, but to create the symbol classes, you'll work with the archived layer.
The archived layer displays all of the wildfire points as red dots. You'll assign symbology that can convey more information than just location.
- In the Layers pane, click the Sept 1, 2021 layer to select it.
Note:
The selected layer has a blue vertical bar to the left of its name.
- On the Settings (light) toolbar, click Styles.
- In the Styles pane, for Choose attributes, click Expression.
The Arcade expression editor appears. The expression window is where you build the expression.
- In the Expression window, delete the first three lines, which are not needed. Type (or copy and paste) var Acres = and add a space at the end.
The var expression stands for variable. Variables are simplified names for objects so they are easier to reference later in the expression.
Next, you'll specify the variable value.
- Click on the expand icon to view the side tabs.
The Profile variables and Functions tabs are where you find the elements you'll use in the expression. The Help tab opens the Arcade help webpage.
- Click Profile variables. In the Profile variables pane, click the arrow next to $feature.
- Under Values, find and click $feature.DailyAcres.
The string is added in the expression window, completing your first line of code.
Any further reference to the variable Acres will access the Daily Acres attribute value for every feature in the layer (in this case, that's every fire incident).
You'll define two more variables to represent two more fields.
- In the expression window, press Enter to go to the next line of the expression. Copy and paste the following two lines of code:
var Age = $feature.FireDiscoveryAge var Type = $feature.IncidentTypeCategory
You now have three variables defined. Acres is the number of burned acres reported on the fire. Age is the number of days since the fire was first reported, and Type defines each fire incident as either a wildfire, prescribed burn, or incident complex.
You'll test that the variables work.
- In the Expression window, on a new line, type return Type.
- Click Run.
The Output window appears. The reported result is RX.
This is the value from the Incident Type Category field for the first fire incident in the dataset. RX is the code for a prescribed fire.
Prescribed fires are controlled burns, which are often planned to help prevent more extreme wildfires later. You want to show all prescribed fires in their own symbol class, since they are very different from the rest of the dataset. You'll also make sure that the symbol class has a more meaningful name than RX so people can understand it in the map legend.
- In the expression window, delete the text return Type. Copy and paste the following code:
if (Type == 'RX') { return "Prescribed Fire" }
This if statement returns the string Prescribed Fire every time the Incident Type Category field has a value of RX.
- Click Run.
The returned result is Prescribed Fire.
- On the next line, copy and paste the following code:
if (Type == 'CX') { return "Incident Complex" } if (Age == 0) { return "New (Past 24-hour)" }
This code creates two more symbol categories. The first is for incident complexes, which are two or more fires in the same area that are managed under one incident management team. The second category is for fires that were reported in the last 24 hours. There is no Type code for new fire incidents. The expression instead finds new records by looking to the Age variable (the Fire Discovery Age field).
The three categories that you've defined so far are all for special cases of fire incidents. Next, you'll place all of the remaining fires into different symbol classes based on their size.
- In the expression window, on the next line, copy and paste the following code:
When ( Acres < 1000, "0-999", )
Any incidents that weren't caught by one of the If statements will be passed to this When statement.
This statement translates to When the Acres value is less than 1000, return the string 0-999. You'll add more symbol classes for larger fires.
- Place your pointer on the empty line (line 15) and paste the following code:
Acres < 10000, "1,000-9,999", Acres < 50000, "10,000-49,999", Acres < 300000,"50,000-299,999",
Now you have four symbol classes based on the number of acres. You'll add one more class to catch any incidents that did not fall into any of the other categories.
- Place your pointer in front of the closing bracket and paste "300,000 or more" (include the quotation marks). Press Enter.
Your completed expression should match the following:
var Acres = $feature.DailyAcres var Age = $feature.FireDiscoveryAge var Type = $feature.IncidentTypeCategory if (Type == 'RX') { return "Prescribed Fire" } if (Type == 'CX') { return "Incident Complex" } if (Age == 0) { return "New (Past 24-hour)" } When ( Acres < 1000, "0-999", Acres < 10000, "1,000-9,999", Acres < 50000, "10,000-49,999", Acres < 300000,"50,000-299,999", "300,000 or more" )
You wrote the If statements before the When statement so the expression can execute more efficiently. The order of your expression matters: the If statements filters out those fires first that don't need to be sorted by size, so the When statement only has to process some of the fires, instead of all of them. This expression follows the best practice of performing the more general sorting (in this case, by fire type) before the more specific sorting (in this case, by fire size), and allows your layer to respond more quickly on a map.
- Click Run.
The output is Prescribed Fire.
The first record in the attribute table is a prescribed fire and was caught by the first If statement in the expression.
- At the top of the Arcade expression editor, delete the existing text.
- Type USA Wildfire Incidents (Acres) and press Tab.
- Click Done.
The map updates to show a symbol class you defined in the Arcade expression. You will customize the symbology further to show different colors of symbols for each symbol class.
Apply the custom symbol
A legend card is displayed on the map, showing the symbol class that you created. Next, you'll reorder the symbol classes and apply a custom symbol to one of the categories.
- In the Styles pane, under Pick a style, for Type (unique symbols) card, click Style options.
- In the Style options pane, next to 300,000 or more, click and drag the reorder button to move the layer to the top of the list.
- Reorder the symbol classes until they are arranged in the following order:
- 300,000 or more
- 50,000-299,999
- 10,000-49,999
- 1,000-9,999
- 0-999
- New (Past 24-hour)
- Incident Complex
- Prescribed Fire
The symbol classes are rearranged.
Next, you'll apply a custom flame symbol to one of the symbol classes.
- Click the symbol next to New (Past 24-hour).
- In the Symbol style pane, for Current symbol, click Basic point.
- For Category, under Added styles, click Uploaded Symbols.
- Click Browse and choose the image you downloaded earlier in the tutorial.
- Click Done.
The yellow and red flame symbol appears in the Symbol style window.
- For Size, type 19.5 pixels.
New fires now have a custom symbol.
Next, you could apply more custom symbols for the other seven symbol classes. For now, you'll skip that and work with the live dataset where the symbol classes have already been defined.
- In the Style options pane, click Done twice.
- In the Contents pane, for the Sept 1, 2021 layer, click the Visibility button so it is no longer visible.
- For the USA Current Wildfires – Current Incidents layer, click the Visibility button so it is visible.
Note:
The USA Current Wildfires – Current Incidents layer changes frequently, so the map you see will not match the images in the tutorial that include it.
- On the Contents toolbar, click Legend.
The eight symbol classes appear, each with a different symbol. The first five classes all use the same image file set to different sizes.
- On the Contents toolbar, click Save and open and choose Save.
Control symbol size by map scale
When designing print maps, the size of your symbol is something you think about just once. But on interactive maps, viewers can zoom in and out. The map scale is always changing, and a symbol that looked good at one scale may look too big or too small at another scale.
Next, you'll write a second Arcade expression to make the wildfire symbols change size slightly as the viewer zooms in and out on the map. The change will be subtle, but it will ensure that the symbols are always an appropriate size for the scale.
- In the Layers pane, ensure the USA Current Wildfires – Current Incidents layer is selected. On the Settings toolbar, click the Styles button.
Under Choose attributes, the chosen attribute is listed as USA Wildfire Incidents (Acres). This is the same expression that you created in the previous steps.
- Under Choose attributes, click Expression.
You'll begin by creating variables.
- In the Expression window, delete the existing text. Copy and paste the following code:
var Acres = $feature.DailyAcres var Age = $feature.FireDiscoveryAge var Type = $feature.IncidentTypeCategory
These variables are the same as in the previous expression. They all access fields from the attribute table. Next, you'll add a fourth variable that queries the map instead of the attribute table.
- On the next line, type var vs = and add a space at the end.
- On the Profile variables tab, click the arrow for $view, and click $view.scale.
The variable vs will return the current scale of the map at the time the expression evaluates.
You'll use it to define different symbol sizes for different map scales.
- Press Enter. Type return vs. Click Run.
The result is a large number.
The number represents the current scale of the map. It will vary depending on the scale of your map before you opened the Arcade expression editor. In the example shown above, the current scale of the map is roughly 1:18,500,000.
- Delete return vs. Press Enter to skip a line.
- Copy and paste the following code:
var ValueSize = When ( Type == 'RX', 17, )
The variable ValueSize does not refer to a single value from the attribute table or the map, as the other variables do. Instead, this variable contains an expression. This expression means When the Type is equal to RX, make the symbol size 17 points. You'll add a comment to this expression to make it easier to understand.
- Place your pointer after Type == 'RX', 17,. Type a space, followed by //Prescribed Fire.
In Arcade, any text prefaced by // is a comment. Comments do not affect the code.
You'll add seven more lines to the ValueSize expression to define sizes for the other symbol classes.
- Place your pointer on the empty line (line 8) and paste the following code:
Type == 'CX', 18, //Incident Complex Age == 0, 19.5, //Past 24-hour Acres < 1000, 18, //0-999 Acres < 10000, 25, //1,000-9,999 Acres < 50000, 33, //10,000-49,999 Acres < 300000, 41, //50,000-299,999
These are the same symbol classes that you defined earlier, but this time you're assigning a size to each one instead of a name. Larger fires are displayed with larger symbols. New fires are also slightly larger than the others, at 19.5 pixels, to give them emphasis, and because the yellow color of the new fire symbol is slightly harder to see on light backgrounds.
Next, you'll test the ValueSize expression.
- Place your pointer after the closing parenthesis and press Enter twice to skip a line.
- Type return ValueSize and click Run.
The Output window shows an error.
A default value is required in When statements, to catch any data that doesn't fall into the classes you defined.
You'll add one to the end of your expression, to assign a symbol size to any fires that are larger than 300,000 acres.
- Place your pointer before the closing parenthesis and type 47. Place your pointer after the closing parentheses and type //300,000 or more.
- Click Run again.
This time, a number is returned. It will vary because you are working with a live dataset that is updated daily, but the number should be either 17, 18, 19.5, 25, 33, 41, or 47.
In the example above, the number 47 is returned, which tells you that the test feature is a wildfire that has burned more than 300,000 acres.
So far, your expression does the same thing as the current symbology: it assigns a different size to each symbol class. The code so far provides the baseline sizes for each symbol class. Next, you'll use Arcade to vary each of those sizes based on the map's scale.
- Erase return ValueSize and press Enter. Copy and paste the following code:
When( vs > 9000000, ValueSize, vs > 4000000, 1 + ValueSize, )
This statement means the following:
- When the map scale is larger than 1:9,000,000, return the value defined by the ValueSize expression.
- When the map scale is larger than 1:4,000,000, return the value defined by the ValueSize expression, plus 1.
The effect of this expression on your map will be the following:
- When the map is zoomed out all the way, the baseline symbol sizes will be used.
- When the map is zoomed in a little, the symbol sizes will all increase by one point.
- Place your pointer on the empty line (line 20) and paste the following:
vs > 2000000, 2 + ValueSize, vs > 1000000, 3 + ValueSize, vs > 500000, 4 + ValueSize, 5 + ValueSize
This When statement adds progressively larger numbers to the baseline symbol sizes as the scale increases. When you are zoomed out to the whole of the United States, a prescribed fire symbol will be 17 points large. When you zoom in to a town, it will increase to 22 points large (17 + 5) so it remains prominently visible.
Note:
In maps, smaller scale refers to maps where the earth appears smaller. A scale of 1:9,000,000 is smaller than 1:500,000.
Your finished expression should match the following:
var Acres = $feature.DailyAcres var Age = $feature.FireDiscoveryAge var Type = $feature.IncidentTypeCategory var vs = $view.scale var ValueSize = When ( Type == 'RX', 17, //Prescribed Fire Type == 'CX', 18, //Incident Complex Age == 0, 19.5, //Past 24-hour Acres < 1000, 18, //0-999 Acres < 10000, 25, //1,000-9,999 Acres < 50000, 33, //10,000-49,999 Acres < 300000, 41, //50,000-299,999 47 //300,000 or more ) When( vs > 9000000, ValueSize, vs > 4000000, 1 + ValueSize, vs > 2000000, 2 + ValueSize, vs > 1000000, 3 + ValueSize, vs > 500000, 4 + ValueSize, 5 + ValueSize )
The smallest symbol size is 17 and the largest is 52 (47 + 5). You'll need these numbers later to set up the symbology.
- Click the Run button.
The Output should be a number between 17 and 52.
- Name the expression Symbol Size. Press Tab.
- Click Done.
In the Styles pane, under Choose attributes, two expressions are listed: USA Wildfire Incidents (Acres) and Symbol Size. Both of these values will be represented by the symbology.
Style symbols by types and size
In the Styles pane, the Types and Size style is available. This option appears when you have one field (or expression) that returns text values, and another that returns number values.
- In the Styles pane, for the Types and Size style, click Style options.
The pane shows two cards. You'll apply the symbology properties to each expression separately.
- For Types (unique symbols) style, click Style options.
All of the symbols that were previously applied based on the USA Wildfire Incidents (Acres) expression are still present. You don't need to make any changes here.
- Click Cancel.
- On the Counts and Amounts (size) card, click Style options.
This style will convert the values from the Symbol size expression into actual symbol sizes. You'll configure the style so a returned value of 17 (the smallest possible value) is drawn with a 17-pixel symbol, and a returned value of 52 (the largest possible value) is drawn with a 52-pixel symbol.
- Click the number on the top of the histogram. Type 52 and press Enter.
Note:
Because you are using live data that changes frequently, the histogram's default numbers and data may be different than in the example image.
You'll also move the histogram's upper handle. Any values greater than or equal to the handle's value will be drawn with the maximum symbol size.
- Drag the upper handle until its label reads 52.
Now that you've correctly set the data range, you'll also ensure that the size range matches 17 to 52.
- Under Size, change Min to 17 pixels and Max to 52 pixels.
- Turn off Include in legend.
- Click Done three times.
- On the map, zoom in and out and observe the symbol sizes.
The symbols grow slightly larger as you zoom in. However, the change is slight. You don't want this change to be noticeable since it might distract or confuse map readers. But the subtle increase in size at large scales helps to make the map easier to read.
The image below compares the unmodified symbol sizes with the modified sizes, which are slightly larger when zoomed in.
- Save the map.
You have now symbolized current wildfire incidents using three kinds of customization. First, you wrote an Arcade expression to create custom symbol classes for different types and sizes of fires. Second, you applied custom .png symbols to the symbol classes. Third, you wrote another Arcade expression to alter the sizes of the symbols slightly at different scales.
Customize labels, fire perimeters, and pop-ups
Your map now has the wildfire data symbolized with custom marker symbols that tell the map reader what kind and size of fire each one is. There are two more pieces of information that you want to convey: the name of each fire, and the perimeter of the burned area.
Create labels
The wildfire layer already has pop-ups configured that users can click to learn about each incident. However, at larger scales, there's enough room to also include labels. Labels help users find fires that they are interested in faster. You'll create labels for the wildfire layer that match the symbology and only appear when zoomed in.
- If necessary, reopen your USA Current Wildfires web map.
- In the Layers pane, ensure the USA Current Wildfires – Current Incidents layer is selected. On the Settings toolbar, click Labels.
- In the Lables pane, turn on Enable labels.
Labels appear on the map.
You'll improve these labels so that they look good and remain legible at different scales and on different maps.
Some of the labels are formatted in sentence case while others are uppercase. You'll use Arcade to ensure that a consistent formatting is used for all labels.
- In the Label features pane, for Label field, click the expression button.
- In the Arcade expression editor, delete the exiting text and type or copy and paste var Name = Upper($feature.IncidentName).
The variable Name will return the IncidentName value from the attribute table, but it will modify it to make it uppercase.
You'll also use this expression to ensure that prescribed fires aren't labeled. To achieve this, you'll make a variable and a When statement.
- On the next line, type or copy and paste the following code:
var Type = $feature.IncidentTypeCategory When ( Type == 'WF', Name, Type == 'CX', Name, "" )
This expression says When the fire is a wildfire or a complex, return the name in uppercase letters. Otherwise, return nothing.
- Click Run.
The Output will vary based on the current dataset, but it should either be a fire name in uppercase letters, or nothing.
- Edit the name of the expression to Uppercase Name. Press Tab and click Done.
All labels on the map update to uppercase letters. Prescribed fires are no longer labeled.
Next, you'll change the style of the labels to ensure that they work on different maps. On a dark basemap, the current black labels may be difficult to read. Additionally, on a map with several other layers, it might not be clear that these labels refer to the fires, and not some other feature on the map.
You'll address these concerns by styling the labels to match the white and red symbols.
- In the Label features pane, click Edit label style.
- In the Label style window, for Color, choose white.
- Turn on Halo. For Color, choose a red color. For Size, set it to 2.
Halos allow you to control the background of text so it can remain legible regardless of the map's background. The chosen colors help to link the labels to the fire symbols. Next, you'll adjust the alignment to ensure that it is clear which label is associated with which symbol.
- For Placement, choose Below center.
Now the labels lie directly beneath each symbol.
Some of the labels hide some of the map symbols. You'll make the labels smaller and ensure that they only appear at larger scales, where there is enough room for them.
- Close the Label style window.
- In the Label features pane, for Visible Range, click World and choose Counties.
- Zoom in and out on the map to test the labels.
They appear when you zoom in and disappear when you zoom out.
These labels provide quick reference information without overpowering the fire symbols.
- Save the map.
Symbolize fire perimeters
So far, you have mapped point data to represent fires. Next, you'll symbolize a polygon layer that represents the burned land. This layer is important for map readers to determine how near a fire is to their home or another place that they care about. You'll choose symbology that is in line with industry standards.
- In the Layers pane, turn off the USA Current Wildfires – Current Incidents layer.
- Turn on the USA Current Wildfires – Current Perimeters layer and select it.
- On the Contents toolbar, click Legend. Zoom in to an area with many fires until the fire perimeters appear.
The Legend pane appears. This layer has two symbol classes: one for the perimeter of wildfires, and one for the perimeter of prescribed fires.
You'll change this default symbology to standard symbols for burn areas. Following a symbol standard or convention helps to make your map easier to interpret since it matches the visuals that people have come to expect from their experience of other maps.
- On the Settings toolbar, click Styles. In the Styles pane, for the Types (unique symbols) style, click Style options.
- Click the red symbol for Wildfire Daily Fire Perimeter.
- In the Symbol style window, click Fill color. In the Select color window, type #F7ADA4 and click Done.
- In the Symbol style window, for Fill transparency, type 50.
- Click Outline color. In the Select color window, type #E60C0C and click Done.
- In the Symbol style window, for Outline transparency, type 0.
- In the Style options pane, click the symbol for Prescribed Fire. In the Symbol style pane, set the following parameters:
- For Fill color, type #E8BD71.
- For Fill transparency, move the slider to 50 percent.
- For Outline color, type #E5A53E.
- For Outline transparency, move the slider to 0 percent.
The styles for the categories in the USA Current Wildfires - Current Perimeters layer are configured.
- In the Style options pane, click Done twice.
The perimeters are now symbolized to match industry standards.
- Save the map.
Customize pop-ups
Pop-ups are an important component of web cartography. Effective pop-ups are customized to clearly convey the information needed for a specific map goal. Both the Current Incidents and Current Perimeters layers have pop-ups already configured, but you'll improve the Current Perimeters pop-ups so they can better handle null values.
- On the map, click one of the fire perimeter polygons to view its pop-up.
The pop-up includes the number of acres burned. However, sometimes the size of a fire is not known. This is especially common for new fires. In these cases, the pop-up will show no number for the area burned.
You don't want the pop-up to imply that zero acres were burned. You'll write one final Arcade expression that returns the number of acres burned most of the time, but when no number is available, it will return the text Not Available instead.
- Close the pop-up.
- In the Layers pane, ensure the USA Current Wildfires – Current Perimeters layer is active. On the Settings toolbar, click Pop-ups.
- In the Pop-ups pane, click Attribute Expressions.
- In the Attribute expressions pane, click Add expression.
- In the Expression window, erase the existing text and copy and paste var GISAcres = ! IsEmpty($feature.GISAcres).
This variable tests to check that the field GISAcres is not empty. The ! means Not.
- Press Enter twice and type return GISAcres. Click Run.
If the result is true, it means that for the test feature, the GISAcres field is not empty: it has a value for the number of acres burned.
- Erase return GISAcres and copy and paste the following:
If (GISAcres) Return text($feature["GISAcres"],'#,###.##')
This line says if the GISArcres variable is true, return the text from the GISAcres field, formatted as a number with a thousands separator and two decimal places. Most of the time, a number will be returned. However, you still need to finish the If statement to cover those cases when the GISAcres variable returns false instead of true.
- On the next line, type Return "Not Available".
- Click Run.
The result should be either a number or the text Not Available.
- Change the name of the expression to Acreage.
Your finished expression should match the following:
var GISAcres = ! IsEmpty($feature.GISAcres) If (GISAcres) Return text($feature["GISAcres"],'#,###.##') return "Not Available"
- Click Done.
Next, you'll use your new expression in the pop-up.
- In the Attribute expressions pane, click the back arrow.
- In the Pop-ups pane, click Text and click Edit text.
- In the edit text window, on the third line, delete {GISAcres}.
- Place your pointer after Acres Burned: and click the Add field name button.
- Click Acreage{expression/exp1}.
The expression is added to the pop-up content text.
- Click OK.
On the map, click some of the fire perimeter features. The Acres Burned line looks the same as before for most features.
But for fires without an Acres Burned value, the pop-up now clarifies that the number of acres burned are not available.
- Close the pop-up and the Pop-ups pane.
- In the Layers pane, turn on the USA Current Wildfires – Current Incidents layer and explore the finished map.
- Save the map.
In this tutorial, you learned to customize symbols for web maps. You used a custom graphic as a map symbol. You used Arcade to classify your data so information from multiple fields was displayed. You controlled the size of the symbols to ensure that they looked good at any scale. You styled labels and perimeter polygons for the fires, and finished by configuring the pop-up to display more accurate information.
Fine cartography always requires some level of customization since every dataset and every map has something slightly different that needs to be conveyed. The design considerations and techniques that you applied to the USA Current Wildfires layer are relevant to many maps.
You can find more cartography tutorials on the Introduction to Cartography page.
You can find more tutorials in the tutorial gallery.