For most basemap layers, the labels are included as a separate layer. If there is only one layer, the labels won't be removable. Light gray and dark gray basemaps have removable label layers. To remove them, expand the basemap layer, remove the labels and save the web map. When you add your own label layer, add the layer to the basemap and set it as a reference layer so the labels draw above features. Here is some helpful documentation:
I've tried this in Pro, but I still have the labels showing up. I know this thread was originally for the workflow in web maps, but do you know of a way in Pro to accomplish this same thing? In the screen capture below, I have added only the base layer from the Light Grey Base to Pro and I am not seeing an option to remove the labels. I have tried adding the REST connection directly through the Add Data tool, but also the Living Atlas search via the Portal tab in the Catalog pane. No matter what I do, I still get there street labels to show up in Pro. Do you know how to (or could provide any sources) that might know how to accomplish your solution in Pro?
Any help would be awesome!
I think the only default basemaps that have a totally separate labels layer are "Terrain with Labels" and "Oceans". As you note, "World Light Gray Canvas Base" has some labels. There is a very similar layer that might provide what you're looking for, however. It's named "Light Gray Canvas Base" and it's available in the Living Atlas.
It is 2022 now. Why is it so hard to just remove the labels to customize the map? Have anyone of you tried Mapbox? With Mapbox Studio, free for individual developer, you can have a colorful or dark grey map with labels completely removed, and you can use those maps with Cesium to have a beautiful 3D map or 3D earth.
Quick and dirty, but effective:
Copy the JSON text from the Edit JSON tab in Vector Tile Style Editor:
Paste it into https://jsoneditoronline.org/ :
Click on the filter icon to isolate desired layers
With the World Street Map, there are only three layer types: fill, line, and symbol
(this can be verified with the query [*] | sort_by(@, &type) | [*].type for other basemaps)
we want just fill and line, so in the wizard, filter -> type | operator -> != (is not equal to) | filter text -> symbol
This takes our 329 layers down to just 139 with no text or icons.
**if there happen to be other types, the query for just fill OR line is [? type == `"line"` || type == `"fill"`]
Hit 'Transform'. type CTRL + A to select all text, replace the json text in the vector style editor, and click the Update button at the top
This takes our basemap from this:
yes, this should be easier, but with the right tools and background knowledge, quite a lot can be done
Hope this helps!