I'm testing GeoLocation on iPhone. The ideia is to have a WebApp that runs on iPhone and, based on my location, gives-me the shortest path to well known spots in my city/country.
My current position os always the starting point.
The end point is always the nearest spot.
Imagine my known spots as all Train Stations in my city.
How can i do such thing? I guess i'll use google maps api but where do i define the spots? How can i say to google to trace the route to the nearest spot?
Thank u ALL:
I hope, you are going to show the route between two latitude & longitude values.The stackoverflow link will help you..
Related
I would like to make a iPhone mapping application. I know that the iPhone can give detailed longitude and latitude coordinates of the user's specific location. How do Google Maps and other mapping applications translate the user's location into the location on the map? There seems to be lots of things to consider. For example, what if the map is rotated, and it seems to me that it there is a lot of scaling and stuff to consider. How does Google Maps translate the user's current location into a specific point on the map and have it be so accurate (within 2 to 3 meters). I would really appreciate an answer or any help. Thanks!
The Google Maps application knows:
the way the Google Maps service has divided the map into tiles
the size and location (lat/lon) of every map tile
the user's selected zoom level
the size of the device screen
the position latitude and longitude reported by the device
With this information, the maps application can do some simple linear arithmetic to find out which tile(s) need to be displayed on the screen so that the user's location is shown in the middle of the screen (or wherever desired).
Your heading/rotation is irrelevant when determining your location. Your location is based on data received from the GPS satellites. There's multiple satellites, and based on how far you are from each, your location is narrowed down to one point. This point has a very detailed pair of coordinates (think 10 digits past decimal point). Every point on Google's provided map is associated with a pair of coordinates. So when your phone figures out your coordinates, it then checks to see where on the map it corresponds to, and places you there on the map. All other locations are also based on coordinates.
Now, the map also has a setting where the map rotates based on your heading. That feature uses the built-in compass that the phone has. The iPhone has had a built-in compass since the 3GS, I believe.
In short, think of the maps provided by Google as a giant, extremely high-resolution image provided by Google, where every pixel (or less) on this image corresponds to a pair of coordinates. After your coordinates are determined, your placed on the corresponding point on that image, regardless of zoom level.
Google maps uses a few different methods to get the location of the user including the location of the mobile network tower the user is connected to (sometimes Google uses triangulation of 2 or more towers to make this more accurate http://techcrunch.com/2007/11/28/google-mobile-maps-pinpoints-your-location-without-gps/), the location of the ISP if the user is connected to WiFi and GPS.
The most accurate is GPS which provides Google with Latitude and Longitude coordinates accurate to within (If I remember correctly) 10 meters. All the images in the Google maps system have GPS coordinates stored against them so all Google has to do is retrieve the right map image and plot the user's position on the image.
I think this is what you're after but if you need more detail about something or if I've misunderstood please leave a comment and I'll modify this answer.
Edit
Please see this page which gives a good introduction to using Google Maps on the iPhone https://developers.google.com/maps/articles/tutorial-iphone
You don't need to code the algorithm for placing a marker on the map to show the users location, it's a simple matter of calling a function/method in the Google Maps API and it does all the work for you. I would suggest having a thorough look through the Google Maps API documentation to find what you need (also found at the previous link).
I think this might be the precise snippet of code you're after:
https://developers.google.com/maps/documentation/javascript/overlays#Markers
I need to build an application similar to iPhone built-in maps. I want to give the start and end location and the route directions to reach there along with the distance. Please help me.
You can use the following API to get the directions.You have to give start and endpoint latitude , longitude and it will display the result in an XML format.Then you can draw the route on map.
LINK
I've heard that there is no supported forward geocoding in corelocation. Can someone please guide me in the right direction to how I could figure this out? I've tried downloading a third party forward geocoding thing and I couldn't get it to work. Please help.
Try to get the location data from The Google Geocoding API and point the results to the map.
Check validity of address with Geocoding on iPhone
Refer to this link. Once you get coordinates, you can add annotations.
I am trying to find the location of user using corelocation framework in my app ,
but
it doesn't showing good results , can anyone please tell me how can i get location accurately in indoors ?
thanks in advance
regards
I am not sure, about the exact physical environment but if wifi access points are available then you can use sdk available from skyhook wireless or navision to locate your current position in case the accuracy of the gps position is not good.
This is not a failsafe approach, but may work better in areas where data is available about wireless ap.
In the general case, you can't get an accurate location indoors using Core Location. (What's wrong with your question is in assuming that you can, before asking how to do the impossible.)
You might get lucky if you are under to a tent roof that is paper thin or near a large window below lots of wide open sky, or happen to be between 3 or more nearby wifi access points whose locations are all accurately and precisely registered with whichever wifi database(s) Apple is using.
I have been programming an app using the mapkit and the SDK 3.0. Everything works allright except for one detail. I have noticed that when displaying the userlocation I get different user positions on the map dependent of the current network. I have read about this problem and understand that it is common? In my WLAN is the user position correctly displayed. When using the 3G net (T-mobile) the position is some 100 meters away from my actual position. I understand this has to do with the celluar phone net using triangulation and in WLAN is the GPS or WiFi hotspot used. So, to my question. Is there a way to go around this? My app shows positions in a town and also the distance to those positions. It is very obvious and also missleading if the position is false because of the short distances. Is there a way (in code) to set which method to be used for getting the user postion? I have tested all other apps on my iPhone using maps and the problem seem to be the same by all of them. (If someone wants to test my app it is in the app store for free under car2go also other comments are of course interesting)
Thanks in advance!
-loop-
Core Location provides information about the vertical and horizontal accuracy of the location that it is reporting. One should use that accuracy to report to the user if the location is suspect. Google maps does this by increasing the size of the blue circle around the location marker. There are other ways to indicate to the user that the location is suspect, alert boxes, not showing the location if it falls outside of some predetermined accuracy, etc.
See: http://developer.apple.com/iphone/library/documentation/CoreLocation/Reference/CLLocation_Class/CLLocation/CLLocation.html#//apple_ref/occ/instp/CLLocation/horizontalAccuracy
Use an alternate source for your location? Portable GPS units would do the trick.
The real question is how can you correct the data being specified by the 3G triangulation. I wonder if you can do a differential to correct for the 3G's location errors.
1) In a given city, calibrate the 3G location errors by plotting the city. This could be corrected by the 3G networks at any time, so you'd have to have a way to verify and re-calibrate.
2) Calibrate the 3G network's location using a known location - a 3G location along with a GPS location. Take that as a differential that can be applied to other 3G locations. This assumes a consistent offset in the triangulation calculation which probably isn't the reality.
3) Wait for the 3G networks to fix it and do nothing in the meantime.
4) Provide the 3G network provider with error information in their triangulation and see if it is a priority for them.
I can't think of any other viable options...
Perhaps you can use CoreLocation directly. CLLocationManager gives you CLLocation objects than include their accuracy. If you get an accuracy below 50 meters, it the location probably came from GPS.