I'm developing an IOS application, that showing user's current location in Google Map when the application load. It's the first screen that I'm showing to users.
But for the first time, application shows incorrect location in the Google Map. Most cases it happens when we do a fresh install. From the second attempt application shows accurate location in the Map.
I'm using IOS default to do this. Using horizontal accuracy & location age we are determining what we assume to be the most accurate current location of the user.
Is there any reason why this is not working as expected?
It has to do with the way iOS get you users location. Often the first location is the last known location, you can check the date on the location results to see how old it is.
The you get the location by triangulation of cellular and WiFi networks. After this location update the phone might have a good GPS signal and will give the most accurate location.
Related
This website finds my location with a reasonable presicion. If i use mobilephone the website finds my exact location. If it is possible without asking permission why most of them asks me before getting my location? Isn't it makes personal security vulnerabilities?
From the same page you gave us:
Webkay uses the Google Geolocation API to locate you. This is an
educated guess and never as accurate as a GPS Location. The accuracy
depends on your location and also on your connection type. If you are
on a mobile network expect an error of up to 50km. This example just
tries to demonstrate how accurate a website can guess your location
without asking you for permission to access your GPS.
A site only needs permission, if it wants to enable your device's GPS. Also, without the permission, the guessed location is heavily dependent on your mobile carrier signal and IP address. If you are in a location with a lot of mobile towers, the location (obviously) will get more precise.
A site can use the information from all near mobile towers around you to triangulate the position and guess where you are. Think of it like a mesh.
For example: I am using a computer to write this now and the location is easy ~100km off, because it has only my IP adress to estimate the location.
I know we can access user's location using geolocation in iOS. I want to know what other ways we can access user's location off course with his permission. I also heard we can access user's location using network/Internet etc.
All geolocation of the device is done via the CoreLocation framework. The specifics of what method(s) used to determine the location is not provided through the framework. The position can be determined via WiFi proximity to a known AP, cellular proximity to a tower mapped by the carrier, or most accurately via the GPS system. Not all methods are available on all devices, obviously. Rather than knowing how location was determined, you merely request location within a desired level of accuracy, and the framework will call back and notify you of an update in position. The actual position is not guaranteed to be pinpoint accurate.
I am looking on developing a tourist application for a city, where when the user is near to a "place of interest" he could get a push (local) on his device.
For example, I would add 100 POIs on my app, and a 100 messages for every POI to show when the user is in range, e.g. "You are close to the Cathedral of.."
Is this scenario possible? Is it possible to check the users position e.g. every 10 minutes even when the application is killed, and when in range fire a local push? How much battery would it drain? If the user closes the GPS would it try to use 3G/wifi signal to get the position?
If yes could you guide me the right way on what I should read on the subject maybe some tutorials and articles?
that's indeed possible. You could use the aforementioned technique outlined in this post. You can extend this with using CLLocationManager:: startMonitoringSignificantLocationChanges to restart the process of listening to locations after the app has been killed. Depending on your accuracy needs there are many other optimizations that can be done regarding battery life, like checking more frequently when a user speeds up etc.
I have developed a library that handles these details for you (for both Android and iOS). The download includes an example application that demonstrates how to use it. Feel free to check it out.
Yes,that is possible.you need to have some "places" (co-ordinates or addresses) stored on theapp locally. Proximity to a stored "place" can be checked by Reverse geocoder.
Check this Wonderful SO Question , very similar to yours
This might be too late for your question, but for anyone else that needs it. GeoFencing is a good option.
Here is a video explaining what geofencing is http://academy.pulsatehq.com/7-things-about-geofencing
And if you are using Ionic platform, here is the link to the plugin
https://github.com/cowbell/cordova-plugin-geofence
GeoFencing will solve exactly your problem. Just create a bunch of geofence located at these tourist sites and when user enters within certain radius of these locations, user will get a notification.
Good luck
When the app is killed, what exactly would be receiving the location updates?
When in the background though, you can set up location updates based on both proximity and time.
Check How do I get a background location update every n minutes in my iOS application?
As for GPS vs. 3g/wifi, the user has the ability to either allow location services for an app, or not. iOS will then handle whether GPS or cell signal will be used to determine position. Read about the significant-change location service here. Using the significant-change service will use more cell location than GPS lock to determine position, and vice-versa for the standard location service. Also look at location accuracy to learn more about conserving battery.
hi all i am working on Application which is bashed on Event according to current location .when my application start i am displaying Event in my ListField according to current location. Application works fine in Simulator after sending Latitude & Longitude manually from simulator.
When i test this app in my device BB storm2 9550, device cant get current location within 3 or 4 second (during Splash screen) . but after some time it get current location successfully .
how can i get my current location as fast as iphone an Android ?
is there any way to get current lat long from device GPS system which we are getting on Refresh GPS .
please suggest me if any one have any idea.
Thanks in Adavance !!!
if you are not getting lat/long quickly then it sounds like you are trying to get the locations using the GPS radio. This would mean it will take time to connect to the satellites . this would also require sky in sight of the phone, ie it will not work indoors.
The quickest way to get lat/longs are
Use cellsite technology( Blackberry supports this in some devices using triangulation)
Use a cellid provider like google location api or opencellid to get the lat/long using the current cell id.
These doesnt drain the battery as much as using the GPS radio so if you can , try using these. Although the lat/long are not accurate as GPS radio lat/longs.
Please check the following for all the info you would ever need for blackberry GPS techniques.
Simple Location API
Location API- start to finish
At a hardware level, BlackBerry devices used to mount Qualcomm's gpsOne chipset, which, in my opinion, is slower than the ones you could find in most recent Android or Apple devices (SiRFstar or Broadcom, etc). Or maybe the BlackBerry OS didn't interface with it in an efficient manner. For whatever reason, I've experienced higher TTFFs in BlackBerry devices than in Android, for a given place. I may be wrong here, it is just an opinion.
I think newer BlacBerries are mounting other chipsets now. And also, as of September 2011, WiFi geolocation service is also available in OS 6.0 and later. Before that, the only location service in BB was A-GPS and celltower (only OS 5.0 onwards).
Some useful links:
Location APIs – Start to finish
Simple Location API
I want to build an application that can set up a set amount of geo-fenced square regions across town, I know I could achieve this by enabling location in the background, and check those coordinates to determine if they are in my area of interest.
But that would mean receiving many notifications from the system and would hit the battery performance.
Instead I wondered if there was a new API or possibly an upcoming one that would let you set a geo fence and only be notified by the system if you're inside of that or close by, rather then monitor your location constantly.
Is that possible ?
I found the following question, but I can't find much else:
http://www.quora.com/Is-the-geo-fence-functionality-built-into-iOS5s-Reminders-application-available-as-a-public-facing-API
It would seem to me that there is something more to geo fencing then tracking the GPS and comparing to an array of points of interest. If I set the reminders app to remind me that I have to walk my roommates dog tonight when I get in, then I can see the location icon at the top of the screen.
If I open the multitasking bar and remove reminders, the location icon persists, indicating the phone is tracking me, but it's an independent task to the reminders app.
If I set up an application with background location tracking, and remove from multitask bar, the location icon disappears with the application. This makes me believe that there is or will be an API for geo fencing coming for iOS 5.x, this would allow apps to post an array of coordinates to the system and receive local notifications based on the proximity to those points.
Does something similar exist or not yet ?
Thanks
UPDATE FOR FUTURE USERS
There seems to be a limit of 10 regions per app that can be monitored at any time (my personal testing), as this is a shared resource.
Apple Documentation extract:
You should always be judicious when specifying the
set of regions to monitor. Regions are a shared system resource and
the total number of regions available systemwide is limited.
You should look at the startMonitoringForRegion:desiredAccuracy: method on CLLocationManager.