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.
Related
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'm building a map kit based app with a map view to display a list of pre-determined locations. I "borrowed" the look and feel of the maps app - the search bar with bookmarks list on top, the zoom to user location button in bottom left, the peel corner to reveal map type controls in bottom right.
To display a route to the map annotation, I'm opening the native maps app to plot the route.
Is this kind of "maps app" like look and feel of the maps app encouraged, or am I violating some clause ? I have not seen anything map specific in the app store review guidelines, but would like to make sure that I wont have any review trouble with my maps app.
Thank you for your input!
What does your app do? If all it does is let users search places and get directions to them, then yeah you're blatantly ripping off the built-in app. But if this is a small part of your app, and it does a bunch of other things with original UI, then sure - why not present the user with a familiar UI paradigm? It all depends on what your app does, and how much of it you're copying from other apps, and for what scenarios.
From the Location Awareness Programming Guide:
Important The Map Kit framework uses Google services to provide map data. Use of the framework and its associated interfaces binds you to the Google Maps/Google Earth API terms of service. You can find these terms of service at http://code.google.com/apis/maps/iphone/terms.html.
In my experience, what you're doing is just fine as long as you don't obscure the google logo at the bottom of the map.
I need maps of certain areas available when no internet connection is available.
It would be like this:
User loads app internet connection is available
App downloads list of coordinates and places pins on the map
User leaves their house and has no internet connection
Pins and map remain readily available for user to interact with, even without internet connection
How do I do this?
You probably won't use MKMapView and MapKit for that, but the Google Maps Static API that allows you to download static images (even with pins on it) directly.
Here is the example given by the Google Maps API doc itself
Then you can store this image and display it in an UIImageView in a UIScrollView for example.
Possibly the above mentioned Google API achieves just this, but another approach is to create a KML file using Google custom maps or some other service and then download and display it. An example can be found here. Alternatively, MapBox has this functionality built in. Go to this webpage, click command-f and search for "offline", and you will find the relevant information. One last suggestion- as an inelegant hack, if no other option works, you could try saving the html of the google maps webpage for the area and then loading that html file from your main bundle into your map view. I have no idea if that would work, but in a last case scenario it would be worth a shot.
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)).