How reliable is MKMapView caching? - ios

I am attempting to integrate a simple map for displaying gps information into a larger ios app. The map should also be available offline.
Prerequisites and what I already know:
Apple does not offer an API for offline maps
I cannot use OpenStreetMaps, Mapbox, etc. due to licensing issues
At the moment I am using MKSnapshotter to create a screenshot of the map needed and am drawing on the screenshot. This works fine, however it takes a while for the screenshot to be made and the mapkit api is very comfortable, etc.
One thing I did notice however, is that MapKit caches quite alot of its Map even after closing the application, turning the device off and on, etc., which means that conceivably I could lock zoom, scroll, etc. when the user plans to go offline. This brings me to the question in the title:
How reliable is MKMapView caching?
For how long can I expect it to keep it's cache?

Related

Apple Map issue with around 2000 annotations

We've integrate Apple native map in our iOS application. But, we're facing some performance issue when playing with Map.Can we get some better performance if we will replace Apple native map with Google map OR Do we have any other way ??
I don't think any map is going to like having 2000 annotations added to it, personally I think you need to sit down and work out a way of greatly reducing that. Perhaps only show visible annotations then add and remove them as the user scrolls around. Or if they zoom out 200 groups into 1.
It will be a job but worth it.

How to automatically adjust a photo (ie. brighten, contrast) on iOS?

My iOS app (objective-C) handles photos. I'd like it to be able offer the user a way to automatically "adjust" an image, like how iOS itself does in the Photos app (little magic-wand icon), or how facebook does it. This basically means auto-brightness and auto-contrast adjustment.
So far i've found "filtrr" (more concerned with adding color it seems), and OpenCV (uhh, feels like using a nuclear missile to swat a fly with). Any other hints? Is there some library or a way of even doing this natively in iOS?
thx!
Look into Core Image for info on filters and how to apply them. Apple's programming guide is a good place to start.
Once you're up and running with Core Image, see the autoAdjustmentFilters method for getting a set of filters that's preconfigured for "one touch enhance" kinds of usage.

How to make a pull-up View in iOS (similiar to FourSquare)

I want to make a a sliding up like FourSquare app.
Like this:
What I want to achieve are:
The UITableView goes all the way up to UINavigationBar.
It drags along with my finger's position.
My app also have a GMSMapView below (Google Map's API, similiar to FourSquare), I don't want the map responses to my gestures on the UITableView, I want it stays still.
Works both in iOS 6 and 7 and iPhone 4,5.
Does anybody have a framework, github's link ... that can help me fulfill this ?
Thank you.
I have been working on something very similar in the past days. This answer is actually quite good, but you will suffer a bit in terms of performance. After more tweaking, I used parts of this library. You don't need to use everything, but keep in mind the following when choosing a library:
Libs that base the movement of the map on the map.centerCoordinate are less performant than libs that base the movement on the map's frame.
You can also read a bit from this tweets exchange I had.
My thoughts about what FourSquare actually did, is that in the beginning they are using a screenshot of the map, so they are not really using a MKMapView, but an UIImageView. Once you touch it and you animate it, they switch between one and another and they start using a map. I will be using Reveal App plus this to know exactly what they are doing.

Removing Apple Maps Default Annotations

I have been building an app that pins places to a map and have been using Apple Maps for it thus far. However, I've noticed that when zoomed in, the default POI annotations that Apple has included in its maps are quite distracting and make the map feel cluttered when I add my own annotations to the map as well.
I am searching for a way to turn these POIs off in the API but have yet to find the correct property or method to do so.
Just to note, it does appear possible as the new OpenTable app is using Apple Maps, but has found a way to remove these POI annotations. I would post images of each to show the difference, but apparently I need 10 reputation points to do this!
If anyone can even point me to a link that will show me how to remove these, I'm happy to read documentation.
Looking at the documentation there is a showsPointsOfInterest as of iOS 7, just set it to NO (ObjC) or false (Swift).

NSLog (or other monitoring event) within UIWebView operations

I'm moderately experienced with iOS, but I'm using UIWebView for the first time on this project.
I'm wondering, is there a way to monitor the line-by-line, internal operations of a UIWebView in Xcode? Maybe drop some NSLogs in there, or some breakpoints? The delegate methods cover the pre- and post-load stuff, but there doesn't seem to be any interface to actually track what the WebView itself does when it loads a page.
Specifically, I'd like to be able to track the app's behavior as each image from a webpage is downloaded and stored. I'm getting some weird errors around an image being unusable on iOS 7, but my PHP/JavaScript swears that everything is fine on its end, and the image seems fine on desktops and on iOS 6. I'm increasingly certain that the problem has to do with the WebView itself, (an answer to a related question seems to suggest it could be about WebKit calls on different threads), and I'd love to breakpoint my way through, or NSLog some key points or something, just to rule some stuff out.
Is anything like this possible? Or is UIWebView a private party that you can only hear about once it's over?
Does it break in Mobile Safari or only in your app?
You can point Safari's web inspector on OS X at Mobile Safari running in the iOS simulator or even on an iOS device (it has to be enabled in settings).
This will allow you to view all the HTTP headers and so on.
Another option is to use something like wireshark to monitor TCP traffic, but that's a lot more complicated.
http://webdesign.tutsplus.com/tutorials/workflow-tutorials/quick-tip-using-web-inspector-to-debug-mobile-safari/

Resources