A method comprising: determining, by a mobile device, an initial location of the mobile device, the initial location being at a venue, the venue comprising a space accessible by a pedestrian and one or more constraints of movement of the pedestrian; determining, based on a reading of a sensor of the mobile device, a state of motion of the mobile device; determining a plurality of candidate locations of the mobile device based at least in part on the initial location, the state of motion, and a map of the venue specifying the one or more constraints; receiving, by the mobile device, a location observation, the location observation including an estimated location of the mobile device in the space, the estimated location being determined based on readings of one or more sensors of the mobile device and location fingerprint data describing attributes of signals measurable by the one or more sensors when the mobile device is at the venue; filtering the candidate locations using the location observation, including determining a likely location of the mobile device based on the candidate locations, the observation, and a probability model; and providing the likely location for output as a current location of the mobile device, characterised in that determining the candidate locations comprises: upon determining that the mobile device is stationary, generating the candidate locations based on a state space system noise model; and upon determining that the mobile device is moving, determining a likelihood that the mobile device is moving from the initial location in a direction that avoids the constraints; and generating the candidate locations, wherein more candidate locations are generated in a direction that is associated with a higher likelihood. determining, by a mobile device, an initial location of the mobile device, the initial location being at a venue, the venue comprising a space accessible by a pedestrian and one or more constraints of movement of the pedestrian; determining, based on a reading of a sensor of the mobile device, a state of motion of the mobile device; determining a plurality of candidate locations of the mobile device based at least in part on the initial location, the state of motion, and a map of the venue specifying the one or more constraints; receiving, by the mobile device, a location observation, the location observation including an estimated location of the mobile device in the space, the estimated location being determined based on readings of one or more sensors of the mobile device and location fingerprint data describing attributes of signals measurable by the one or more sensors when the mobile device is at the venue; filtering the candidate locations using the location observation, including determining a likely location of the mobile device based on the candidate locations, the observation, and a probability model; and providing the likely location for output as a current location of the mobile device, characterised in that determining the candidate locations comprises: upon determining that the mobile device is stationary, generating the candidate locations based on a state space system noise model; and upon determining that the mobile device is moving, determining a likelihood that the mobile device is moving from the initial location in a direction that avoids the constraints; and generating the candidate locations, wherein more candidate locations are generated in a direction that is associated with a higher likelihood. upon determining that the mobile device is stationary, generating the candidate locations based on a state space system noise model; and upon determining that the mobile device is moving, determining a likelihood that the mobile device is moving from the initial location in a direction that avoids the constraints; and generating the candidate locations, wherein more candidate locations are generated in a direction that is associated with a higher likelihood.