dave
dave

Reputation: 893

get location on iphone ONLY from the GPS - not the wifi network

i am creating an app that uses location-

everything works swimmingly except one thing-

when i come home my iphone connects to my local wifi network and instead of getting my location using the gps in the phone it tries to get it by figuring out where my wifi network is connected to- if i turn my wifi off it keeps an accurate location point-

as soon as my phone is connected to my wifi network it starts telling me my location is several km/miles from my actual point.

i would like my app NOT to use the wifi network to try get my location-

is there a way i can- a. tell if a location point has been derived from the GPS so i can ignore locations derived from the wifi network. b. stop location services jumping over to wifi for location

Upvotes: 8

Views: 6050

Answers (6)

dave
dave

Reputation: 893

Well I did some playing around

Found some apple documentation that says that [location verticalAccuracy] REQUIRES a device with gps.

So I stuck this code in (abridged) and based on the limited testing I have done, it appears to be doing what I want:

if (([location horizontalAccuracy] > 0) && ([location verticalAccuracy] > 0)){
     //report location here
}

Thanks all for your replies.

Upvotes: 5

ajacian81
ajacian81

Reputation: 7569

The reason it uses WIFI at home is because there's no way it can have direct sight of the GPS satellites out in space - instead of not giving you any location data, it uses the next best available source.

Upvotes: 1

lionfly
lionfly

Reputation: 479

the inaccurate GPS coordinates are obtained by the iPhone not only via the Wi-Fi or mobile networks, but also the real-coordinates with accuracy level >100 metres.

What I use is to put the line: if (newLocation.horizontalAccuracy < 0 || newLocation.horizontalAccuracy > 50) return;

as the first line in the didUpdateToLocation, to filter out inaccurate coordinates.

The 'location age' i.e. NSTimeInterval locationAge=[locTimestamp timeIntervalSinceNow]; does NOT serve for me to get rid of cached coordinates.

Upvotes: 0

Adrian Pirvulescu
Adrian Pirvulescu

Reputation: 4340

A-GPS = GPS + cell tower triangulation. There is no WI-FI positioning.

Upvotes: -6

jamone
jamone

Reputation: 17421

You can set cLLocationAccuracy.desiredAccuracy = kCLLocationAccuracyBest and see if that does it. It should try and limit to GPS use, however that isn't 100% guarenteed.

Upvotes: 1

Dave DeLong
Dave DeLong

Reputation: 243146

Other than asking the user to turn off his Wifi, there's no documented way you can force the location manager to use GPS over Wifi. It might be possible with private API, but that would also get you rejected from the App Store.

Upvotes: 2

Related Questions