I'm looking for advice on how to build an algorithm that maps any point on a map to a point on another map, interpolating where needed.

Let me better clarify with an example of what I concretely need...

I have a set of elements and paths on a real top down map (think google maps or any gps-like system) and I have another non top down representation of the same area. Specifically I'm working on a typical ski resort map of piste and slopes like this one.

This second map is more like an illustration and it's typically a three dimensional representation of a section of mountains. The viewing angle is often selected so to offer the clearest view of the whole skiing complex and there's no guarantee that size or proportions are actually correct. It's more an artistic work than a precise map.

I want portable devices to be able to map themselves on this map, using the "real" coordinates they receive from their GPS chips.

I obviously assume that the "mapping" process is based on providing myself a certain number of reference points between the two maps. Corners of the map, start and finish of every pista, aerial ways, specific buildings, mountain tops... the more I feed to the algorithm the more precise it would probably be.

Obviously the tricky part is for it to be able to map everything in between hard coded reference points, by looking for the closest reference and averaging everything in between.

I'm sure this is done often in many similar contexts (think of games that constantly have to map things showing player locations or such) but I have no idea where to look for a concrete example. Any link to tutorials, sample code and the mathematical theory behind it would be great.