Hi, one of the developers of Add Location here.
The SiteContext dictionary only exists for the internals of Add Location.
When we set the geolocation we set both the ShadowInfo.NorthAngle as well as GeoReference.GeoReferenceNorthAngle (note that there is a comment in the code base that NorthAngle is the reliable one so don’t use the GeoReferenceNorthAngle).
This is complicated by the fact that the solar north plugin allows the user to change the north angle.
So what we do in Add Location is to calculate the north angle manually and prompt the user if it seemed they manipulated the NorthAngle with the solar north plugin.
How geolocation works with Add Location
When you open add location true north offset is pre filled with the true north at a position (a.k.a. NorthAngle and GeoReferenceNorthAngle), if you change this pre-set offset your model & model axis rotate in both add location as well as SketchUp. this rotation is stored in ProjectNorth, and is used to be able to check for consistency and being able to reset the model to its original state (via right click menu)
NorthAngle is NOT the magnetic declination
sorry for getting a bit technical.
NorthAngle is the offset between “up” or the green axis in and north, when you open AddLocation either for geolocation or importing context (map tiles, terrain buildings) you see a 2D map (using WGS84/Mercator projection) where north is always “up”, this map is angle preserving coming from first navigation on the sea, then on the street, but not distance preserving (which is what we need to import context geometry like terrain or map tiles accurately). So we need to convert to a different 2d representation of our globe which is UTM (universal transversal mercator), but in this representation north is not “up” anymore, north is at an angle (NorthAngle).
Possible Solution
I am no expert on the C API so I will give advice using ruby - I hope you can use that to translate to C without too much issue. You can get a transformation from the axes from the model and then invert it:
Sketchup.active_model.axes.transformation.inverse then you can transform points or vectors to get the coordinates in the “original coordinate system”.
For example
Sketchup.active_model. axes.xaxis.transform(Sketchup.active_model. axes.transformation.inverse)
=> Vector3d(1, -1.29684e-17, 0)
I hope this helps.