Incorrect GeoCoordinate at Random
Sometimes when the device is pulling coor开发者_StackOverflow社区dinates with the GeoPositionAccuracy set to High and the MovementThreshold set to 0, the GeoCoordinate that is captured is further away and not inline with the other coordinates. How can I prevent that or remove that GeoCoordinate from my collection of GeoCoordinates? You'll notice that in the imge below right above the second light grey 'e' and to the right on the route 11 symbol, you'll see a little jog out. The same thing under the first little grey 'e'.
GPS computes location from the intersection volume of shells centred on satellites. With perfect accuracy they'd be spheres but there's an error tolerance so it's intersecting shells. The closer together they are on the horizon, the bigger the intersection volume is (long and thin). GPS hardware picks the best three satellites. "Best" incorporates horizontal angular separation and signal strength.
Moving into the shadow of a building can cause the set of satellites to change. Substantial change in dilution of precision may be accompanied by abrupt large changes in computed position. The slang name for this is "GPS teleporting" and it is very common in concrete canyons and in tracked vehicles that park under metal awnings. More sophisticated systems will use accelerometers to recognise this phenomenon by virtue of the fact that that a real sudden large change of position would be accompanied by a high acceleration. Over a number of samples the centroid can give a reasonable indication of the actual position.
When you set your movement threshold to zero, your GPS becomes very sensitive and therefore noise is introduced (from the environment). I'm guessing that it may well be noise that's causing certain jittering. From the Best Practice guide
Set a Reasonable Movement Threshold
Because GPS hardware in mobile devices do not have an antenna, the sensors are usually designed to be very sensitive. This sensitivity can result in a small amount of noise in the signal from surface reflection and other environmental effects. The main Location Service class, GeoCoordinateWatcher exposes the MovementThreshold property. This property specifies the minimum change in position that must take place before the PositionChanged event is raised. If you set the MovementThreshold property to a very low value, you can cause your application to receive events that are actually the result of noise in the signal. To smooth out the signal to only represent significant changes in position, set the MovementThreshold property to at least 20 meters. This will also result in lower power consumption for your application. Setting the movement threshold to 0 meters will result in the event being raised as frequently as once per second. This setting may be useful for navigation applications.
精彩评论