If by draping a surface with a map, you mean a plot like this one: https://plot.ly/~empet/13872/mount-st-helens/,
then this https://plot.ly/~empet/14684 is a Jupyter Notebook, explaining how you should relate the two traces.
If your data for the elevation surface are given by a numpy.array of shape (m, n) (or a list of lists), then, eventually you should find what are the ranges
[lat_min, lat_max], for the longitude and latitude of the rectangular area under the elevation. These values can be deduced from an associated geojson file.
Another example, that can be transformed in an elevation map and its projection onto a plane is this one: https://plot.ly/~empet/14067.