In general, you only need two things to perform positioning:
Measurements. In a sense, almost everything you can measure will depend on the position and could be used for positioning. However, it's the most sensible to measure things that are very sensitive to the position. For example, measuring the temperature might tell you in what continent you are but that's not very accurate. Measuring the distance or the angle to some point will probably be more accurate.
Reference points. It is only possible to describe a position relative to some reference points. Reference points can be 'your home', a lighthouse, the north star or some satellites in the sky. For us, we will be using anchors. With 3 anchors it is possible to describe a two-dimensional coordinate system in which we will find our position. For three-dimensional positioning, we need 4 anchors.
Here are some examples:
Camera (with orientation specific
WIFI or BLE fingerprinting
Received signal strength
The fingerprints in the database
Magnetic field vector
The magnetic north
Acceleration and angular velocity
Your initial position and direction
The most commonly used method of positioning uses basic geometry to estimate the position. By measuring the distance to a number of anchors with a known position it is possible to obtain your own position. If we measure a certain distance, then we know we will be in a circle of that radius around the anchor. If we make distance measurements with 3 anchors we see that our position is uniquely determined by the intersection of the three circles. This method is called trilateration (or multilateration if more than 3 anchors are used).
The difficulty of this approach lies in the fact that the measurements are not perfect. There will always be some noise on the measurements and because of this, the circles will not intersect at exactly one point. To circumvent this issue, we try to find the point that is closest to all circles.