Hi Dan,
The phenomenon you're seeing a quite normal, we called this Temperature Coefficient Offset.
You need to characterize the TCOs (1 TCO per axis) of the MAG3110 to avoid the magnetic drift over temperature. Note that the TCOs changes for each device, so you can't apply a direct compensation formula to the raw measurement without one time calibration for each magnetometer.
To calibrate the sensor, you need to record the temperature and the magnetic field of the 3 axis (OUT_x_x registers) at 2 different temperatures (DIE_TEMP register).

Bigger is you temperature gradient, better will be the TCO calculation.
Then use these formulas for the parameter computation:

Once you've characterized the TCO parameters, I suggest you to register them into the MCU flash.
Finally, for each raw measurement (B_raw can be also your offet compensated data), you can apply the formulas below:

Note that you need also to get the DIE_TEMP register value to compensate the magnetic value.
Please find below an example of the calibration effect improvements I got using this method:

I hope it helps.
For a car detection system, you can also not use the offset calibration (HardIron) and the TCO either. In fact you just need to detect the magnetic change in a pretty low timespan. Working with the vector magnitude (VECM) of the magnetic field ( sqrt(x²+y²+z²) ), you should be able to detect long drift (temperature effect) and quick magnetic drift (vehicle presence). I mean if between two measurements of the VECM (previous VECM - current VECM) with a data rate of lets say of 0.5Hz the magnetic value does not change a lot, you don't have any car there. This algorithm can be very simple and efficient, it does not care of the offset and temperature drift. But that's an other way of thinking.
Have a great day,
Anthony