In an iPhone application I'm developing I need to get GPS coordinates to perform some actions based on the values received. Users should have two possibilities of giving the location:
automatically from iPhone build-in GPS
by finding a specific point on a map (Google Maps)
I know how to user CLLocationManager to get current position coordinates and I know how to add Google Maps using JS API. What I would like to know if how can I get coordinates for a specific point on a map that user clicks. Is that possible with UIWebView or is there any other way of getting the values I need?
I'd suggest using MapKit framework (introduced in SDK 3.0) that uses google maps services. MKMapView and other classes will provide all functionality you want without the need to mess with java-script:
Displaying google maps
Showing and tracking user location
Easy converting between view coordinates and geo coordinates (see convertPoint:toCoordinateFromView: and convertCoordinate:toPointToView: functions)
Creating and showing custom map markers
Reverse geocoding
etc. :)
Related
Hey I am using the HERE SDK and we are trying to make it possible to track the position indoor. We have the indoor map set up on the here map inside the app (made in Flutter). Now we want the user to be able to move around and show the position on the map by using beacons. We receive the following information from the beacons
(using flutter-beacon for this https://pub.dev/packages/flutter_beacon):
// Example Output: {"region":{"identifier":"Minew Tech"},"beacons":[{"proximityUUID":"74278BDA-B644-4520-8F0C-720EAF059935","major":256,"minor":30313,"rssi":-99,"accuracy":12.77,"proximity":"far","txPower":-59,"macAddress":"84:EE:03:53:95:D0"},
// {"proximityUUID":"E2C56DB5-DFFB-48D2-B060-D0F5A71096E0","major":0,"minor":0,"rssi":-75,"accuracy":0.28,"proximity":"immediate","txPower":-59,"macAddress":"AC:23:3F:A9:2E:7F"}]}
How can we use this information to update the position of the user on the map ?
Do we need to use this API:
https://developer.here.com/documentation/positioning/api-reference-swagger.html ?
The Indoor Positioning service is not part of the HERE SDK but delivered through a separate SDK that can easily be used together with the HERE SDK. The Indoor Positioning service is not available for self-serve yet but requires the involvement of a HERE representative at this point in time.
I'm making an iPhone location based app and I'm having trouble with the last aspect of it. I was wondering if anyone knows how to integrate a search bar that correlates with the map that we can use from MKMapView.
It's literally a search bar above the map that the user can type in an area and it will take them there.
Is this possible?
I've looked around for tutorials but I have only found how to make an app with a map view, annotations and adding callouts.
What you're looking for is geocoding - the process of turning an address in your search bar into a latitude/longitude coordinate, which you can then set the map's position to.
This question has two main answers. This answer shows how to geocode using a Google API, and this answer shows how to geocode using an Apple API.
If you're using MapKit (which uses Apple maps as of iOS 6.0), then you should probably use the Apple API (you are not supposed to use Google Maps APIs with non-Google maps).
If you're using the new Google Maps SDK for iOS, you might want to use the Google API for geocoding. Although note that the answer I've linked to is using the Google API with MapKit (as it was written back when MapKit was using Google Maps), so you would need to modify it a bit.
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 want to create kind of a map view, just without the map..
Sound strange? I'll explain - I have a bunch of coordinates representing users location that I want to show on screen with there relative location from one another and from the user location (in center of the screen). But I don't want to show the map itself because I don't won't to expose the real address for privacy issues.
The map should look something like this:
I though of using the regular map kit so I have all of its functionality but I'm not sure how to do that. and I'm not sure if this is a violation of the google service license...
Any ideas?
You might want to consider to just ignore the mapkit and go with just location and images as pins. You can easily calculate where a person is standing in relation to another by just the longitude and latitude. it is not a violation of the terms as the gps from the iphone has nothing to do with google. Only the actual maps do.
(however if you are using google api related stuff without showing a map it might be a violation, for example you cannot query for altitude to google itself without showing a map. But then again the phone's gps gives you the altitude.)
Well, First of all it will be the violation of Google, as MKMapView by default will query map tiles from Google server behind your hidden Overlay. So don't do that,
What I would suggest is to look into third party customize map solution for iOS. Something like MapBox.
See : MapBox
iOS SDK of MapBox : SDK
In which you can customize the color and look and feel of your Maps and location. There are paid option and free options too. Regarding the privacy issue I suggest you shoot an Email to MapBox people and ask if you can just hide the street names from the App.
I want to use to UIWebView to display google maps mobile website for my app. However; I need the current user location to be passed into the webview so that it may show a route. What steps must I take in order to not only pass the current location to the google maps url but also pass what I want it to route(for example, Costco)?
Second, my app is going to be a paid app and I was wondering if it is even possible to use google maps due to this? The app does not only have gps but other sections as well that I created myself.
Thank you so much
I think you dont want to show google-maps in an UIWebView. You should use either the MapKit-Framework or any other maps-framework like for instance route-me.
In both framework it is possible to draw polylines (links: MapKit, route-me) (which represents a route) and any other stuff like pins and a bubble with a circle around it which indicates the current location (links: MapKit, route-me (should be somewhere in the sample-programs)).