There were a number of factors that made this a hard problem for me to solve on my own - for one, I was not very familiar with the mapping toolbox and making my own GeoTIFF files; second, the heat map solution I adapted ( from here) kept me trying to use a webmap instead of trying to do this in a figure, which is probably where I should have started.
Here's the solution Mathworks support and I came up with...
...
%decide which GeoTIFF file to use
if ~contains(filename, 'Res')
[DTroute, R] = geotiffread('/myfilepath/DT_route.tif');
city_mapDT = geoshow(DTroute(:,:,1:3), R);
else
[ResRoute, R] = geotiffread('/myfilepath/ResRoute.tif');
city_mapRes = geoshow(ResRoute(:,:,1:3), R);
end
...
%generate the web map and route overlay
xmtr_loc = geoshow(xmtrLat, xmtrLon, 'DisplayType', 'Point','Marker','x','MarkerEdgeColor','Yellow', 'MarkerSize', 12)
colors = hot(nBins);
cmap = colormap(colors);
c = colorbar;
c.LimitsMode = 'auto';
c.Limits = [0 230];
c.TicksMode = 'manual';
c.Ticks = [0, 230];
c.TickLabels = [round(binRanges(1), 2),round(binRanges(20), 2)];
c.Label.String = 'Bit Error Rate (BER) Measurement';
c.Location = 'southoutside';
c.FontSize = 11;
c.FontWeight = 'bold';
hold on
axis image off
%draw the parameter data on the GeoTIFF as a heat map
for i=1:length(cmap)
fig = geoshow(s(i),'Color',cmap(i,:),'LineWidth', 3);
end
A lot of the code is just setting up the colorbar. The real work comes with choosing the correct GeoTIFF to start with (see first if/else statement) and then drawing the heatmap in the for loop at the end.
The output (see attached file) is exactly what I was looking for, i.e. it's a solution we can apply with minimal refactoring to each heatmap we'd like to generate, and it draws the colorbar with the numerical limits (max/min) for whichever data set we choose to use; the base GeoTIFFs, the parameters to display as a heatmap, the colorbar/map, transmitter location, and max/min values are easily changeable. Hopefully, someone else will find this to be useful!