Add 3D surface based on Plot_geo?

I want the surface is geo projected(with the shape of states, countries…) but want the 3d surface to show something like density etc. Is it possible? Or is there any other similar functions?
I tried using package(akima) to interpolate but the edge is straight lines, not natural geo boundaries.
Thanks in advance.