document.write('<link rel="stylesheet" href="http://gist.github.com/stylesheets/gist/embed.css"/>')





document.write('<div id=\"gist-154679\" class=\"gist\">\n  \n  \n    \n            \n\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n          \n          \n          \n            <div class=\"gist-highlight\"><pre><div class=\"line\" id=\"LC1\"><span class=\"cp\">#import &quot;DDAnnotation.h&quot;<\/span><\/div><div class=\"line\" id=\"LC2\">&nbsp;<\/div><div class=\"line\" id=\"LC3\"><span class=\"k\">@interface<\/span> <span class=\"nc\">DDAnnotation<\/span> <span class=\"p\">()<\/span><\/div><div class=\"line\" id=\"LC4\"><span class=\"k\">@property<\/span> <span class=\"p\">(<\/span><span class=\"n\">nonatomic<\/span><span class=\"p\">,<\/span> <span class=\"n\">retain<\/span><span class=\"p\">)<\/span> <span class=\"n\">NSString<\/span> <span class=\"o\">*<\/span><span class=\"n\">title<\/span><span class=\"p\">;<\/span><\/div><div class=\"line\" id=\"LC5\"><span class=\"k\">@property<\/span> <span class=\"p\">(<\/span><span class=\"n\">nonatomic<\/span><span class=\"p\">,<\/span> <span class=\"n\">retain<\/span><span class=\"p\">)<\/span> <span class=\"n\">MKPlacemark<\/span> <span class=\"o\">*<\/span><span class=\"n\">placemark<\/span><span class=\"p\">;<\/span><\/div><div class=\"line\" id=\"LC6\"><span class=\"o\">-<\/span> <span class=\"p\">(<\/span><span class=\"kt\">void<\/span><span class=\"p\">)<\/span><span class=\"nl\">notifyCalloutInfo:<\/span><span class=\"p\">(<\/span><span class=\"n\">MKPlacemark<\/span> <span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"n\">placemark<\/span><span class=\"p\">;<\/span><\/div><div class=\"line\" id=\"LC7\"><span class=\"k\">@end<\/span><\/div><div class=\"line\" id=\"LC8\">&nbsp;<\/div><div class=\"line\" id=\"LC9\">&nbsp;<\/div><div class=\"line\" id=\"LC10\"><span class=\"cp\">#pragma mark -<\/span><\/div><div class=\"line\" id=\"LC11\"><span class=\"cp\">#pragma mark DDAnnotation implementation<\/span><\/div><div class=\"line\" id=\"LC12\">&nbsp;<\/div><div class=\"line\" id=\"LC13\"><span class=\"k\">@implementation<\/span> <span class=\"nc\">DDAnnotation<\/span><\/div><div class=\"line\" id=\"LC14\">&nbsp;<\/div><div class=\"line\" id=\"LC15\"><span class=\"k\">@synthesize<\/span> <span class=\"n\">coordinate<\/span> <span class=\"o\">=<\/span> <span class=\"n\">_coordinate<\/span><span class=\"p\">;<\/span> <span class=\"c1\">// property declared in MKAnnotation.h<\/span><\/div><div class=\"line\" id=\"LC16\"><span class=\"k\">@synthesize<\/span> <span class=\"n\">title<\/span> <span class=\"o\">=<\/span> <span class=\"n\">_title<\/span><span class=\"p\">;<\/span><\/div><div class=\"line\" id=\"LC17\"><span class=\"k\">@synthesize<\/span> <span class=\"n\">placemark<\/span> <span class=\"o\">=<\/span> <span class=\"n\">_placemark<\/span><span class=\"p\">;<\/span><\/div><div class=\"line\" id=\"LC18\">&nbsp;<\/div><div class=\"line\" id=\"LC19\"><span class=\"o\">-<\/span> <span class=\"p\">(<\/span><span class=\"kt\">id<\/span><span class=\"p\">)<\/span><span class=\"nl\">initWithCoordinate:<\/span><span class=\"p\">(<\/span><span class=\"n\">CLLocationCoordinate2D<\/span><span class=\"p\">)<\/span><span class=\"n\">coordinate<\/span> <span class=\"nl\">title:<\/span><span class=\"p\">(<\/span><span class=\"n\">NSString<\/span><span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"n\">title<\/span> <span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC20\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">if<\/span> <span class=\"p\">((<\/span><span class=\"n\">self<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span><span class=\"n\">super<\/span> <span class=\"n\">init<\/span><span class=\"p\">]))<\/span> <span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC21\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">[<\/span><span class=\"n\">self<\/span> <span class=\"nl\">changeCoordinate:<\/span><span class=\"n\">coordinate<\/span><span class=\"p\">];<\/span><\/div><div class=\"line\" id=\"LC22\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">_title<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span><span class=\"n\">title<\/span> <span class=\"n\">retain<\/span><span class=\"p\">];<\/span><\/div><div class=\"line\" id=\"LC23\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">_placemark<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">nil<\/span><span class=\"p\">;<\/span><\/div><div class=\"line\" id=\"LC24\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC25\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">return<\/span> <span class=\"n\">self<\/span><span class=\"p\">;<\/span><\/div><div class=\"line\" id=\"LC26\"><span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC27\">&nbsp;<\/div><div class=\"line\" id=\"LC28\"><span class=\"cp\">#pragma mark -<\/span><\/div><div class=\"line\" id=\"LC29\"><span class=\"cp\">#pragma mark MKAnnotation Methods<\/span><\/div><div class=\"line\" id=\"LC30\">&nbsp;<\/div><div class=\"line\" id=\"LC31\"><span class=\"o\">-<\/span> <span class=\"p\">(<\/span><span class=\"n\">NSString<\/span> <span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"n\">title<\/span> <span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC32\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">return<\/span> <span class=\"n\">_title<\/span><span class=\"p\">;<\/span><\/div><div class=\"line\" id=\"LC33\"><span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC34\">&nbsp;<\/div><div class=\"line\" id=\"LC35\"><span class=\"o\">-<\/span> <span class=\"p\">(<\/span><span class=\"n\">NSString<\/span> <span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"n\">subtitle<\/span> <span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC36\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">_placemark<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC37\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">return<\/span> <span class=\"p\">[[<\/span><span class=\"n\">_placemark<\/span><span class=\"p\">.<\/span><span class=\"n\">addressDictionary<\/span> <span class=\"nl\">valueForKey:<\/span><span class=\"s\">@&quot;FormattedAddressLines&quot;<\/span><span class=\"p\">]<\/span> <span class=\"nl\">componentsJoinedByString:<\/span><span class=\"s\">@&quot;, &quot;<\/span><span class=\"p\">];<\/span><\/div><div class=\"line\" id=\"LC38\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">}<\/span> <\/div><div class=\"line\" id=\"LC39\">&nbsp;<\/div><div class=\"line\" id=\"LC40\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">return<\/span> <span class=\"p\">[<\/span><span class=\"n\">NSString<\/span> <span class=\"nl\">stringWithFormat:<\/span><span class=\"s\">@&quot;%lf, %lf&quot;<\/span><span class=\"p\">,<\/span> <span class=\"n\">_coordinate<\/span><span class=\"p\">.<\/span><span class=\"n\">latitude<\/span><span class=\"p\">,<\/span> <span class=\"n\">_coordinate<\/span><span class=\"p\">.<\/span><span class=\"n\">longitude<\/span><span class=\"p\">];<\/span><\/div><div class=\"line\" id=\"LC41\"><span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC42\">&nbsp;<\/div><div class=\"line\" id=\"LC43\"><span class=\"cp\">#pragma mark -<\/span><\/div><div class=\"line\" id=\"LC44\"><span class=\"cp\">#pragma mark Change coordinate<\/span><\/div><div class=\"line\" id=\"LC45\">&nbsp;<\/div><div class=\"line\" id=\"LC46\"><span class=\"o\">-<\/span> <span class=\"p\">(<\/span><span class=\"kt\">void<\/span><span class=\"p\">)<\/span><span class=\"nl\">changeCoordinate:<\/span><span class=\"p\">(<\/span><span class=\"n\">CLLocationCoordinate2D<\/span><span class=\"p\">)<\/span><span class=\"n\">coordinate<\/span> <span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC47\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">_coordinate<\/span> <span class=\"o\">=<\/span> <span class=\"n\">coordinate<\/span><span class=\"p\">;<\/span><\/div><div class=\"line\" id=\"LC48\">&nbsp;<\/div><div class=\"line\" id=\"LC49\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c1\">// Try to reverse geocode here<\/span><\/div><div class=\"line\" id=\"LC50\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c1\">// Note: LLVM/Clang Static analyzer might report potentical leak, but it won&#39;t because we release in delegate methods <\/span><\/div><div class=\"line\" id=\"LC51\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">MKReverseGeocoder<\/span> <span class=\"o\">*<\/span><span class=\"n\">reverseGeocoder<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[[<\/span><span class=\"n\">MKReverseGeocoder<\/span> <span class=\"n\">alloc<\/span><span class=\"p\">]<\/span> <span class=\"nl\">initWithCoordinate:<\/span><span class=\"n\">_coordinate<\/span><span class=\"p\">];<\/span><\/div><div class=\"line\" id=\"LC52\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">reverseGeocoder<\/span><span class=\"p\">.<\/span><span class=\"n\">delegate<\/span> <span class=\"o\">=<\/span> <span class=\"n\">self<\/span><span class=\"p\">;<\/span><\/div><div class=\"line\" id=\"LC53\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">[<\/span><span class=\"n\">reverseGeocoder<\/span> <span class=\"n\">start<\/span><span class=\"p\">];<\/span><\/div><div class=\"line\" id=\"LC54\"><span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC55\">&nbsp;<\/div><div class=\"line\" id=\"LC56\"><span class=\"cp\">#pragma mark -<\/span><\/div><div class=\"line\" id=\"LC57\"><span class=\"cp\">#pragma mark MKReverseGeocoderDelegate methods<\/span><\/div><div class=\"line\" id=\"LC58\">&nbsp;<\/div><div class=\"line\" id=\"LC59\"><span class=\"o\">-<\/span> <span class=\"p\">(<\/span><span class=\"kt\">void<\/span><span class=\"p\">)<\/span><span class=\"nl\">reverseGeocoder:<\/span><span class=\"p\">(<\/span><span class=\"n\">MKReverseGeocoder<\/span> <span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"n\">geocoder<\/span> <span class=\"nl\">didFindPlacemark:<\/span><span class=\"p\">(<\/span><span class=\"n\">MKPlacemark<\/span> <span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"n\">newPlacemark<\/span> <span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC60\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">[<\/span><span class=\"n\">self<\/span> <span class=\"nl\">notifyCalloutInfo:<\/span><span class=\"n\">newPlacemark<\/span><span class=\"p\">];<\/span><\/div><div class=\"line\" id=\"LC61\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">geocoder<\/span><span class=\"p\">.<\/span><span class=\"n\">delegate<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">nil<\/span><span class=\"p\">;<\/span><\/div><div class=\"line\" id=\"LC62\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">[<\/span><span class=\"n\">geocoder<\/span> <span class=\"n\">release<\/span><span class=\"p\">];<\/span><\/div><div class=\"line\" id=\"LC63\"><span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC64\">&nbsp;<\/div><div class=\"line\" id=\"LC65\"><span class=\"o\">-<\/span> <span class=\"p\">(<\/span><span class=\"kt\">void<\/span><span class=\"p\">)<\/span><span class=\"nl\">reverseGeocoder:<\/span><span class=\"p\">(<\/span><span class=\"n\">MKReverseGeocoder<\/span> <span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"n\">geocoder<\/span> <span class=\"nl\">didFailWithError:<\/span><span class=\"p\">(<\/span><span class=\"n\">NSError<\/span> <span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"n\">error<\/span> <span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC66\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">[<\/span><span class=\"n\">self<\/span> <span class=\"nl\">notifyCalloutInfo:<\/span><span class=\"nb\">nil<\/span><span class=\"p\">];<\/span><\/div><div class=\"line\" id=\"LC67\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">geocoder<\/span><span class=\"p\">.<\/span><span class=\"n\">delegate<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">nil<\/span><span class=\"p\">;<\/span><\/div><div class=\"line\" id=\"LC68\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">[<\/span><span class=\"n\">geocoder<\/span> <span class=\"n\">release<\/span><span class=\"p\">];<\/span><\/div><div class=\"line\" id=\"LC69\"><span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC70\">&nbsp;<\/div><div class=\"line\" id=\"LC71\"><span class=\"cp\">#pragma mark -<\/span><\/div><div class=\"line\" id=\"LC72\"><span class=\"cp\">#pragma mark MKAnnotationView Notification<\/span><\/div><div class=\"line\" id=\"LC73\">&nbsp;<\/div><div class=\"line\" id=\"LC74\"><span class=\"o\">-<\/span> <span class=\"p\">(<\/span><span class=\"kt\">void<\/span><span class=\"p\">)<\/span><span class=\"nl\">notifyCalloutInfo:<\/span><span class=\"p\">(<\/span><span class=\"n\">MKPlacemark<\/span> <span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"n\">newPlacemark<\/span> <span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC75\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">[<\/span><span class=\"n\">self<\/span> <span class=\"nl\">willChangeValueForKey:<\/span><span class=\"s\">@&quot;subtitle&quot;<\/span><span class=\"p\">];<\/span> <span class=\"c1\">// Workaround for SDK 3.0, otherwise callout info won&#39;t update.<\/span><\/div><div class=\"line\" id=\"LC76\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">self<\/span><span class=\"p\">.<\/span><span class=\"n\">placemark<\/span> <span class=\"o\">=<\/span> <span class=\"n\">newPlacemark<\/span><span class=\"p\">;<\/span><\/div><div class=\"line\" id=\"LC77\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">[<\/span><span class=\"n\">self<\/span> <span class=\"nl\">didChangeValueForKey:<\/span><span class=\"s\">@&quot;subtitle&quot;<\/span><span class=\"p\">];<\/span> <span class=\"c1\">// Workaround for SDK 3.0, otherwise callout info won&#39;t update.<\/span><\/div><div class=\"line\" id=\"LC78\">&nbsp;<\/div><div class=\"line\" id=\"LC79\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">[[<\/span><span class=\"n\">NSNotificationCenter<\/span> <span class=\"n\">defaultCenter<\/span><span class=\"p\">]<\/span> <span class=\"nl\">postNotification:<\/span><span class=\"p\">[<\/span><span class=\"n\">NSNotification<\/span> <span class=\"nl\">notificationWithName:<\/span><span class=\"s\">@&quot;MKAnnotationCalloutInfoDidChangeNotification&quot;<\/span> <span class=\"nl\">object:<\/span><span class=\"n\">self<\/span><span class=\"p\">]];<\/span><\/div><div class=\"line\" id=\"LC80\"><span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC81\">&nbsp;<\/div><div class=\"line\" id=\"LC82\"><span class=\"cp\">#pragma mark -<\/span><\/div><div class=\"line\" id=\"LC83\"><span class=\"cp\">#pragma mark Memory Management<\/span><\/div><div class=\"line\" id=\"LC84\">&nbsp;<\/div><div class=\"line\" id=\"LC85\"><span class=\"o\">-<\/span> <span class=\"p\">(<\/span><span class=\"kt\">void<\/span><span class=\"p\">)<\/span><span class=\"n\">dealloc<\/span> <span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC86\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">[<\/span><span class=\"n\">_title<\/span> <span class=\"n\">release<\/span><span class=\"p\">],<\/span> <span class=\"n\">_title<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">nil<\/span><span class=\"p\">;<\/span><\/div><div class=\"line\" id=\"LC87\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">[<\/span><span class=\"n\">_placemark<\/span> <span class=\"n\">release<\/span><span class=\"p\">],<\/span> <span class=\"n\">_placemark<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">nil<\/span><span class=\"p\">;<\/span><\/div><div class=\"line\" id=\"LC88\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">[<\/span><span class=\"n\">super<\/span> <span class=\"n\">dealloc<\/span><span class=\"p\">];<\/span><\/div><div class=\"line\" id=\"LC89\"><span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC90\">&nbsp;<\/div><div class=\"line\" id=\"LC91\"><span class=\"k\">@end<\/span><\/div><\/pre><\/div>\n          \n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"http://gist.github.com/raw/154679/e3be6d03500abb8dbd3d8c052919279ae537de41/DDAnnotation.m\" style=\"float:right;\">view raw<\/a>\n          <a href=\"http://gist.github.com/154679#file_dd_annotation.m\" style=\"float:right;margin-right:10px;color:#666\">DDAnnotation.m<\/a>\n          <a href=\"http://gist.github.com/154679\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n    \n  \n<\/div>\n')
