Version History

Released August 6, 2018


- Added support for the new AMP lightning strike icon and time period layers (AWFMapLayerLightningStrikes5Minute, AWFMapLayerLightningStrikes15Minute, AWFMapLayerLightningStrikes5MinuteIcons, AWFMapLayerLightningStrikes15MinuteIcons)

- Fixed an issue with future layers were not added to map while AMP metadata was still loading

- Fixed several issues related to image animation loading and when the animation layer is hidden/displayed during the loading process

Released July 24, 2018


- Fixed occasional crash when mapping place JSON to AWFPlace when `loc` is `[NSNull null]`

- Updated AWFWeatherApiResponse to only log warnings to the console for API response warnings (e.g. error codes prefixed with `warn_`) instead of returning an error


- Added support for using the alternative AMP raster layers that correspond to point/shape layers when supported by AMP (e.g. `AWFMapLayerAmpLightningStrikes` instead of `AWFMapLayerLightningStrikes`)

- Fixed issue where AWFWeatherMap was not removing itself from NSNotificationCenter observers on dealloc which would result in a crash at times

- Fixed issue where failed point source data requests for animation data wasn't properly calling the `animation:didFailLoadingWithError:` delegate method

- Fixed crashes as a result of adding nil objects to the animation data cache for tile sources

- Fixed lightning annotation view styling for Apple Maps (MapKit) strategy

Released July 16, 2018

- Removed API access keys from console output unless debugging is enabled


- Updated default float properties for all AWFWeatherObject models to be `NAN` to better handle when nil values are returned by the API instead of being set to `0`. Your code should now check if a value exists using `isnan(prop)`.

- Updated `AWFObservationSummary`, `AWFStormReportSummary` and `AWFStormThreat` to use instances of `AWFRangeSummary` when storing min/max/average values

- Added support for searching places using an ICAO code `AWFPlaces::searchUsingICAO:options:completion`)

- Improved the build-in places search, `searchUsingNameStartingWith:options:completion:` to better handle state and country abbreviations and full names when searching


- Added support for controlling image quality for raster tile and animation imagery for Retina devices using `shouldUseRetinaImagery` on `AWFWeatherMapConfig`. Using a lower imagery quality will improve the speed and performance of loading raster tiles and animation frames where applicable.

- Fix occasional crash in `AWFLegendView` when attempting to add a legend for a nil key

- Fix occasional crash when adding storm cells point data on a weather map

- Fix tile overlays not re-appearing on weather map on region change after stopping an animation

Released June 22, 2018


- Fixed an issue with AWFWeatherEndpoint request options instance not being used for requests if specific request options is nil

- Removed references to old NAM models in AWFForecastModelType (AWFForecastModelTypeNone, AWFForecastModelTypeNAM4K and AWFForecastModelTypeNAM12K)


- Added support for changing index placement of existing AWFRasterMapLayer instances on a map

- Added future pressure and future pressure isobars layer types (AWFMapLayerFutureSurfacePressure, AWFMapLayerFutureSurfacePressureIsobars)

- Added support for preventing duplicate map layer types being added to the map

- Fixed now/future marker positioning on AWFTimelineView

- Fixed animation starting playback when map region changes even when animation isn't active

- Fixed raster/tile overlays not using parent map source's alpha value when rendering overlay on map

- Fixed several issues with automatically managing inserting and removing future AMP layers

- Fixed issue with forecast model changes not resetting previously loaded animation data

- Fixed AMP layer code for future precipitation (was

Released June 4, 2018

- Fixed issues with bitcode support for all compiled frameworks


- Added support for abbreviating longer words in legend labels as needed based on available width

- Fixed issues related to updating weather map configuration properties after weather map instantiated not updating internal properties

- Fixed several future precipitation AWFMapLayer types to correlate with available Aeris Maps layers

- Fixed issues with weather map delegates and data sources not always being set to nil on weather map deallocation, causing crashes in some instances


- Updated to support Mapbox SDK 4.0 which is now the minimum required SDK version for use with Mapbox

Released May 22, 2018

Major version release with many new features and improvements. For more information on migrating from 2.0, refer to our Migration Guide at You can find the complete documentation for the changes and new features in 3.0 at

Released May 21, 2018

- AerisMap - fixes compiler warnings/errors about missing headers in umbrella header for modules

Released December 29, 2017

- AerisMap - add public property for accessing timeline view's progress activity indicator

- AerisMap - add all missing Aeris Maps layer types

Released December 1, 2017

- Aeris - added missing properties to AWFSunMoon for the /sunmoon endpoint

Released November 16, 2017

- AerisMap - added support for custom date and time formatters on AWFTimelineView (timeFormatter, dateFormatter)

- AerisMap - added more properties to control the styling of AWFTimelineBarView (barHeight, barStrokeColor, barStrokeWidth, progressBarFillColor, futureBarFillColor, etc)

- AerisMap - fixed an issue where changing any fill or stroke properties on AWFTimelinePositionView were not updating the views

Released October 19, 2017

- Aeris - adds support for new /rivers API endpoint AerisMap - adds support for all AMP layers via AWFLayerType AerisMap - adds support for rivers point data layer

- AerisMap - fixes layout issues with map timeline for iPhone X

- AerisMap - fixes map overlay tile rendering issue on iOS 11

- AerisMap - minor stability improvements

Released July 13, 2017

- AerisMap - fixes an issue where storm cell cones/arrows overlay would not render properly for consecutive instances of AWFWeatherMap after one is instantiated

- AerisMap - adds support for reloading API account metadata as needed if data wasn't loaded during AerisEngine setup due to loss of network connectivity

Released June 22, 2017

- AerisMap - fixes an issue with path arrows/cones overlays for storm cells layer not always rendering

- AerisMap - fixes an issue where storm cells overlays not always removed when disabling the parent layer

- AerisMap - updates radar legend with latest AMP color ramp Demo - improves location search query

Released March 6, 2017

- AerisMap - fix bug with annotation style's `shouldAnimate` not being obeyed

Released October 20, 2016

- AerisMap - fix issue with map annotations not always being removed when refreshing map data

- AerisMap - improve data refreshing processes to prevent multiple requests for same data at same time

Released October 10, 2016

- AerisMap - fix issue with AMP layers not refreshing via refreshLayerType:

Released August 2, 2016

- AerisMap - fix issue with future-only overlays not being added to map AerisMap - improve file organization and Apple-specific class names AerisMap - update permissions to support AMP layers AerisUI - fix nil images being returned from framework due to incorrect bundle

Released July 1, 2016

- add failed url string to log message fix high temp label width on daily summary view fix timeline progress bar not resizing on device rotation

Released June 15, 2016

- FIX: duplicate text labels being added to styled views

Released May 18, 2016

- FIX: set weather map delegates to nil on dealloc to prevent crashes when deallocating AWFWeatherMapViewController FIX: improved @2x AMP overlay support for map tiles on retina devices

Released May 2, 2016

- FIX: Minor updates to Cocoapods podspec dependencies

Released April 28, 2016

- FIX: map gestures not enabled based on map config property changes FIX: properly stop/reset map animation when parent app goes into background FIX: tile overlays not updating on refreshAllLayerTypes

Released April 21, 2016

- ADD: date format constants for time parts with zero padding ADD: future snow legend style

- ADD: basic support for text data layers

- ADD: method to check if future layer type belongs to forecast model

- ADD: missing associated layers per model types

- ADD: show animation frames as they're progressively loading

- ADD: snow depth legend style

- ADD: support for cancelling all tile requests

- ADD: support for precip/estimate endpoint

- ADD: support for setting legend styles for weather data type groups

- ADD: support for snow depth global layer

- ADD: support for text annotations in GoogleMaps

- ADD: support for winter/snowdepth endpoint

- FIX: animation timestamps not being converted to proper time zones

- FIX: bug with deselecting and removing text data layers, updating after changing formatter

- FIX: delegate not being assigned when setting mapView property on map strategy after init

- FIX: earthquake annotation animation not repeating

- FIX: graph series not referencing proper model class per data type

- FIX: issue converting date to date string in request options

- FIX: legend views not redrawing on frame changes

- FIX: point indicator position wrong while dragging timeline

- FIX: still set API response data if there was a warning returned

- FIX: updated temp legend color scale

- FIX: various image animation fixes and improvements

- MOD: cancel tile requests when reloading/invalidating tile data

- MOD: support for new AMP tile layers, combined weather tile layers

- MOD: only show animation load progress based on timeline position

- MOD: output error/warning to console if exists for response

- MOD: re-add animation container annotation as needed

- MOD: updated to support AFNetworking 3.0

- MOD: updating supported layer types and codes per latest AMP changes

- REM: iOS < 7.0 tile layer/overlay view support

- DEMO: forecast model wind graph not rendering

- DEMO: precip summary not rendering

Released December 16, 2015

- FIX: proper ObjC and Swift module support for better compatibility with Xcode 7.1+ and CocoaPods

Released November 24, 2015

- Added CocoaPods support for integrating with projects

Released November 12, 2015

ADD: All - support for localization throughout framework

ADD: Aeris - AWFMeasurementType, convenience methods for getting unit values

ADD: Aeris - convective outlook data layer type for map

ADD: Aeris - convenience field constants for countries endpoint

ADD: Aeris - convenience filter and field constants for drought endpoint

ADD: Aeris - convenience method to generate geo polygons from geojson dictionary

ADD: Aeris - data type constants for indices requests

ADD: Aeris - drought index polygon map layer support

ADD: Aeris - fire outlook polygon map data layer support

ADD: Aeris - missing weather data types

ADD: Aeris - new outdoor index type

ADD: Aeris - NSString crypto category methods

ADD: Aeris - string constants for supported endpoint filters and fields

ADD: Aeris - support for cat property on storm reports

ADD: Aeris - support for fire filter on storm reports

ADD: Aeris - support for affects action, more unit tests for new loaders

ADD: Aeris - support for convective/outlook endpoint

ADD: Aeris - support for droughts/monitor endpoint

ADD: Aeris - support for fires/outlook endpoint

ADD: Aeris - support for geo polygons on storm cell summary data

ADD: Aeris - support for geo polygons on storm report summary data

ADD: Aeris - support for geojson output from api

ADD: Aeris - support for new contains endpoint action

ADD: Aeris - support for NSCoding on AWFGeoPolygon

ADD: Aeris - support for stormcells/summary endpoint

ADD: Aeris - support for stormreports/summary endpoint

ADD: AerisUI - support for callout accessory views and tap event handlers

ADD: AerisUI - support for recalculating/resizing an existing callout’s frame

ADD: AerisMap - notifications for weather map animation status changes

ADD: AerisMap - public access property for mapview strategy’s internal calloutView instance

ADD: AerisMap - support for crossfading between image animation intervals

ADD: AerisMap - support for footer text in table section instances

ADD: AerisMap - support for map polygons with interior holes

FIX: All - full bitcode support for Debug and Release builds

FIX: Aeris - location manager auth requests for iOS 8+

FIX: AerisUI - align left edge of horizontal graph axis view with left edge of series container view

FIX: AerisUI - cancel series network request when resetting graph, don’t render series if no points

FIX: AerisUI - custom callout handling improvements, support for accessory views

FIX: AerisUI - custom callout layout improvements to match native iOS callout

FIX: AerisUI - graph bar renderer not resetting when re-rendering, causing bar offset

FIX: AerisUI - graph rendering performance and no data issues

FIX: AerisUI - graph series renderer views not being removed when resetting graph

FIX: AerisUI - graph time axis date/timezone fixes

FIX: AerisUI - graph time axis ticks not laying out properly for intervals less than 1 day

FIX: AerisUI - timezone issues with graph time axis ticks, date formatter issues for callout and ticks

FIX: AerisMap - add catch in raster tile renderer for invalid image data

FIX: AerisMap - don’t defer weather map option updates on iPad

FIX: AerisMap - ensure overlay renderer isn’t deallocated before calling setNeedsDisplay

FIX: AerisMap - hires satellite overlay using wrong product code

FIX: AerisMap - issue with map layers not being added when selecting options

FIX: AerisMap - legend view and toggle button not resizing to parent view width

FIX: AerisMap - map animation doesn’t start playing if one layer doesn’t have data

FIX: AerisMap - map options controller setting start date equal to end date, improved logging

FIX: AerisMap - polygon callout improperly being dismissed after appearing

MOD: Aeris - renamed AWFCache to AWFURLCache to avoid conflict with AerisCore

MOD: Aeris - throw exception if access keys not configured before requesting data

MOD: AerisUI - custom callout improvements and layout fixes

MOD: AerisUI - don’t include callout accessory views in margin calculations when hidden

MOD: AerisMap - adjust to use https for tile urls as required for iOS 9

MOD: AerisMap - disable pixel shift check for map strategy region change notifications

MOD: AerisMap - remove cached objects on memory warnings

MOD: AerisMap - removing Current from surface map layer types

MOD: AerisMap - removing cached map objects on memory warnings

DEMO: added drought monitor controller

DEMO: added sample threats view

DEMO: added simple convective outlook data view

Released August 28, 2015

- ADD: additional forecast model types

- ADD: convenience method for getting advisory names by VTEC code

- ADD: method to return the API property key mapped to a specific AWFObject model property

- ADD: support for ignoring zero values on a graph series item

- ADD: support for moving a presented callout to new position

- ADD: support for graph series modifiers

- ADD: support for setting global options for graph series requests

- ADD: convenience unit converter functions

- ADD: Xcode 7/iOS 9 bitcode support

- FIX: graph bars extending below bottom of series bounds

- FIX: batch request url strings not being encoded

- FIX: catch to make sure decoded overlay animation image is not nil

- FIX: from/to date improvements for request options

- FIX: from/to date option comparison fixes

- FIX: graph axis tick improvements

- FIX: graph series and axis views not resizing with graph view properly

- FIX: graph series not adjusting based on configured interval

- FIX: prevent duplicate field names in graph series object loader requests

- FIX: graph series container view origin not obeying insets

- FIX: use lat/lon before name for search query string

- FIX: various graph rendering bug fixes

- MOD: changed request option from/to interval check to 1 hour

- MOD: map overlay renderer improvements

Released July 6, 2015

ADD: custom tile renderer to fix iOS 7/8 image warnings

ADD: support for defining the text and tick styles for axis views

FIX: crash caused by trying to map to invalid AWFPlace property

FIX: prevent a domain of 0 on x or y axis (causing crashes when rendering)

MOD: move Mapbox support to separate framework, support MBXMapKit via Cocoapods

NOTE If you are using Mapbox with the Aeris iOS SDK, this version contains a breaking change that will require updates to your project, specifically MBXMapKit must be installed separately and is no longer part of AerisMap.framework. Review the updated Mapbox support documentation for updating your project for using MBXMapKit in your project.

Released June 30, 2015

- ADD: convenience method [AWFDataLayer isLayerType:includedInCombinedLayerType:] for checking if combined layer type contains a specific layer type

- ADD: convenience methods for overriding map config styles on AWFWeatherMapConfig

- ADD: MKMapView method awf_coordinateByOffsettingCenterCoordinate:offset:zoomLevel: to calculate a coordinate offset without using current map state

- ADD: methods to set and get sections for specific map options

- ADD: set intrinsic content size for auto layout support on AWFWeatherMapLegendView

- ADD: support for newer iOS platforms in device checks

- ADD: support for secure API requests using [AerisEngine secureEngineWithKey:secret:]

- FIX: map annotations not always being removed when refreshing layer data

- FIX: storm cell cone overlays not re-rendering after last changes

- FIX: corrected class prefixes on AWFVenuesLoader and AWFVenue

- FIX: enums should be typedef for AWFUserTrackingMode, AWFLocationAccuracy and AFVenueType, causing duplicate symbol errors

- FIX: improvements to removal of annotations/overlays when reloading layer data

- FIX: invalid coord checking in AWFCoordinate2DIsValidNonZero()

- FIX: issue with checking if map contains a data layer

- FIX: map crashing if overlay.annotations is nil when reloading data

- FIX: map only contains layer type if index >= 0

- FIX: only validate delegate if not nil

- FIX: polygons not being removed when data reloaded

- FIX: tap gestures on annotations when on top of polygons, custom annotation view order fixes

- MOD: helper methods for creating option sections in AWFMapOptionsViewController

- MOD: improved checks against active map legend types

- MOD: reduce point data limit for older devices

- MOD: refactor of AWFMapOptionsViewController to allow for easier customization

- MOD: style adjustments to storm cell annotations

Released March 23, 2015

- ADD: method for searching within a circle on AWFGeographicObject

- ADD: support for changing the constrained view for graph callout on AWFGraphView

- FIX: crash when nil or empty polygon overlay instance on AWFGeographicObject

- FIX: date string length catch to prevent crashes during JSON date parsing

- FIX: verify image is not nil before adding to dictionary for data layer animations

Released February 18, 2015

- FIX: crash when initializing AWFMapOptionsViewController

Released January 15, 2015

Complete rewrite and modernization of the SDK.

For more information on migrating from 1.0, refer to our Migration Guide at

You can find the complete documentation for the changes and new features in 2.0 at

Released October 7, 2014

- FIX: longitude values were being passed in wrong order to api for map data requests

Released September 9, 2014

- FIX: AFObservation using deprecated API property for wind speed, resulting in nil values

Released August 7, 2014

- FIX: crash due to setting wrong property keys on AFTideStation

Released April 23, 2014

- MOD: Updated framework builds to include 64-bit architecture

Released September 3, 2013

- ADD: support for crossfading between intervals in overlay animation, can give smoother animation depending on delay/hold time interval (re: AerisMapConfig.plist for setting)

- ADD: support for resuming overlay animation when a call to refresh overlays is made

- FIX: optimized tile overlay and animations to reduce memory warnings, especially on iPad

- FIX: random memory-related crashes for tile overlays when panning/zooming parent map

- FIX: issue with previously cached overlay not being added back onto map after initial show/hide

- FIX: occasional crashes when stepping animation while animation data is loading after map pan/zoom

- FIX: precip records not appearing for climate records point data overlay due to wrong annotation image reference

Released July 26, 2013

- ADD: additional AFWeatherMapDelegate methods for better custom callout view handling

- FIX: memory improvements for image/tile overlays (fixes memory issues in 1.1.7 and 1.1.8)

- FIX: several improvements to overlay tile request performance and cache handling so tiles are loaded from cache instead of new requests

- FIX: issue where successful API responses with warnings were being delegated as failed responses

- FIX: disabled user interaction on animation control view’s page control to prevent proper button events from triggering

Released June 26, 2013

- ADD: AFAnimationControlView to map framework and on AFWeatherMap by default

- ADD: additional methods and delegate methods on AFWeatherMap for more easily accessing Aeris-specific overlays internally on the map

- ADD: support for accessing and controlling animation frames for overlays

- ADD: support for custom point data annotation image in map config file

- ADD: support for overriding the default cache storage policy for image/tile overlays

- FIX: bug with API responses with errors being delegated as successful instead of failed

- FIX: bug with animation being disabled when switching image overlay types

- FIX: bug with polygon overlays being duplicated in some instances when app returns from the background

- FIX: stopping an animation while loading breaks the map control

- MOD: added debug logging to overlay refreshing methods in overlay manager

- MOD: improvements to mapView and containerView setup in weather map

- MOD: updated AFObjectLoaderProtocol to make didFailWithError an optional delegate method

Released June 7, 2013

- ADD: convenience method for creating a AFPlace object for a coordinate

- ADD: convenience method for searching within bounding box

- ADD: integration of SMCalloutView code for better custom callout views

- ADD: new remote callout view for handling visual display of remote data for custom callouts

- ADD: snow depth properties in observation objects

- ADD: support for re-adding existing overlays back onto map after animation stops

- ADD: support for showing flash flood warning polygons on map overlay

- FIX: better handle redirected requests for tile images

- FIX: crashes with tile overlay view from clearing out reference dictionary when request queue completes but drawing tiles has not

- FIX: custom colors for storm cell polygon types

- FIX: drawing bug fixes on circular progress element

- FIX: improvements to map view resizing and container view hierarchy

- FIX: interactive map container and legend positioning bugs

- FIX: issue with overlay animations using wrong zoom level, giving fuzzy quality

- FIX: issue with weatherMapDidStopAnimating delegate method being called even when map overlay is not animating (causing recursion for users)

- FIX: overlay manager not being assigned proper map view and weather map instance when the managed map view changes

- FIX: positioning issue for loading indicator in callout view

- MOD: added version and user debug output when in debug mode

- MOD: adjusted requests in tile view overlay to prevent memory leaks

- MOD: converted observation callout on interactive map to new callout code

- MOD: support for hiding map controls (in favor of custom view)

- MOD: updated source url for overlay tile metadata json file

- MOD: additional code docs for added delegate methods

- MOD: moved overlay tile core classes to public headers so can be used outside of framework for custom overlays

Released December 10, 2012

- ADD: support for getting the wind speed range for a forecast period (rounded to the nearest min and max interval of 5)

- FIX: bug with wrong values being used for ForecastPeriod.windSpeedRange strings

- FIX: ForecastPeriod.windSpeedRange sometimes outputting negative wind speed values

- FIX: more fixes for animation rotation handling

- FIX: issue with animation snap-back when closing progress view

- FIX: interactive map legend not remaining anchored to bottom of map view on device rotation

- FIX: animated overlay not resetting properly on device rotation

- MOD: improved handling of account settings when AerisEngine is initialized with proper keys, app can register with NotificationCenter to wait for permissions to load if not available at app launch

Released October 26, 2012

- ADD: method for getting title of maps based on their map codes/enumerated values

- ADD: new AFWeatherMapDelegate methods for point/polygon overlay data request success and failure

- ADD: slider controls in map options menu for overlay opacity and animation speed

- ADD: support for additional static weather maps

- ADD: support for defining custom options for interactive map point data in AerisMapConfig.plist

- ADD: support for dynamically adjusting animation speed at runtime using AFWeatherMap.animationSpeed

- ADD: support for dynamically adjusting overlay opacity at runtime using AFWeatherMap.overlayAlpha

- ADD: support for using user’s AerisGraphics key when requesting static weather maps (uses custom branding if implemented)

- FIX: crash with point/polygon overlay data loader delegate not being cleared, causing occasional crashes if certain interactions were performed

- FIX: issue with blurry animations at certain zoom levels

- FIX: memory leak with nexrad overlays and static map options

- FIX: minor remaining bugs with the cropped image overlay views

- MOD: added missing OptionsString properties for all point/polygon data overlays

- MOD: changed “defaultAlpha” property on AFImageOverlay/AFTileOverlay to “alpha”

- MOD: improved caching of tile and image overlay data

- MOD: improved methods for requesting static weather maps

- MOD: updated AerisMapConfig.plist to use a single overlay alpha value for all overlays, removed support for defining a separate alpha for individual overlays

- DEMO: updated static map viewer to use new AFImage methods and properties

Released September 17, 2012

- ADD: missing MKMapViewDelegate methods through AFWeatherMapDelegate (mainly for overlay views)

- ADD: recent and nearby obs weather views in AerisUI framework

- ADD: support for defining custom path for wxicons used in map annotation callouts

- ADD: support for obs/recent and obs/archive endpoints

- FIX: MKMapViewDelegate mapView:annotationView:didChangeDragState:fromOldState: not being fired in AFWeatherMapDelegate instances

- FIX: cached files not being deleted from app bundle, switched download cache to use session instead of permanent caching

- FIX: loading animation not appearing when selecting a different location on map annotation

- FIX: map options selections not staying selected when scrolling the table view, fixed the issue and cleaned up this functionality

- FIX: object loader background process sometimes causing crashes if instance is deallocated before background process completes

- FIX: place search string not being created properly is only city and state/country are provided

- FIX: removes success:false responses from internal cache if invalid data

- FIX: special characters being encoded twice through AFURL causing the wrong url string to be passed with the api request

- FIX: weatherMapDidStopAnimating called even when not animating

- FIX: wrong urls for static maps in AFImageLoader

- MOD: increased cache time for internal permissions to reduce remote API requests

- DEMO: fixed issue with city,country searches not returning any results from api

Released July 13, 2012

- ADD: missing MKMapViewDelegate methods through to AFWeatherMapDelegate

- ADD: missing icon for rotating storm cell

- ADD: missing sst and chlorophyll legends

- ADD: new AFOverlayType enumeration, all overlay types merged into this single enum

- ADD: new general image overlay type to support upcoming overlays

- ADD: initial support for NIDs within framework

- FIX: added missing wind gust property mappings

- FIX: auto adjusts position of Google logo based on legend height on interactive map

- FIX: circular annotation for long-press gesture not always clearing previous circle path

- FIX: configurable setting for callout not working for record annotations

- FIX: crash if no timestamps are returned for an overlay; now will just output an error message to the console and not add overlay to the map

- FIX: crash when enumerating through point data overlays when adding to map

- FIX: crash when switching between NID locations

- FIX: issue with NIDs overlays not animating or setting title properly

- FIX: legend background not appearing all the time when legends are adjusted

- FIX: memory leak with animated tile overlays

- FIX: name and date issues with NIDs overlays

- FIX: not all point data annotations/overlays were being removed from the map; added new delegate method to handle removing old overlays

- FIX: polygon overlays not being removed when animations start

- FIX: some MKMapViewDelegate selectors not being sent through AFWeatherMapDelegate

- FIX: various minor bugs after overlay manager refactor

- FIX: wildfire names displaying “(null)” in annotation callout if name is not set

- MOD: adjusted tile animation url paths

- MOD: adjustments for new NIDs animation method

- MOD: fixed minor issues with annotation identifiers if no proper code found for an object

- MOD: improved performance of options menu by removing multiple calls to overlay manager for active overlay check

- MOD: improved performance of processing large data sets (specifically for interactive map point data) by implementing background threads and internal autorelease pools for better memory handling

- MOD: improved performance of storm cell cones by combining into a single polyline/polygon overlay

- MOD: made custom annotation view base classes public so external projects can subclass

- MOD: refactored code for core overlay manager

- MOD: updated tile urls to point to new tile server setup

- DEMO: updated to use new AFOverlayType enum values

Released May 22, 2012

- ADD: additional UIColor utilities for dealing with hex strings

- ADD: support for customizing warning polygons using core map config plist

- FIX: crash when returning to map if polygon warnings are active

- MOD: improved performance of storm cell annotations when accessing custom config options

- DEMO: auto-updating iPad weather data for main full weather view when app becomes active

Released May 17, 2012

- ADD: UIColor category for converting hex strings to UIColor instances

- ADD: additional map config options

- ADD: affect action support to earthquakes loader

- ADD: affects support to storm cells loader

- ADD: delegate methods for AFWeatherMap when overlays are added and removed by overlay manager

- ADD: polygon-based warning overlays

- ADD: initial support for polygon overlays

- ADD: missing records and earthquakes legend

- ADD: multi polyline/polygon classes to better handle merging multiple polyline/polygons into a single view to improve performance

- ADD: new polygon warnings legend

- ADD: support for controlling which storm cell types the forecast lines and cones are plotted and their respective colors

- ADD: support for displaying storm cell forecast cones only when cell annotation is selected (as defined in AerisMapConfig.plist)

- ADD: support for vertical line views

- FIX: defined bounds on forecast cone annotation to prevent re-drawing entire screen view

- FIX: issues with certain object loaders that would cause a crash if no endpoint defined for certain methods

- FIX: issues with interactive map options menu and new polygon overlay types

- FIX: minor memory leak in AFAdvisory

- FIX: specific model class not being stored through the request for parsing

- MOD: adjusted expiration times on AFPlacesLoader

- MOD: adjusted overlay manager to use AFMultiPolyline for the storm cell forecast lines

- MOD: moved loading and reset controls into AFFlexibleCalloutAnnotation to be inherited by subclasses

- MOD: updated existing legends to match style of new ones

- MOD: updated reset stuff with flexible annotations

- MOD: updated storm cell annotation to use modified config key for markers based on type

- DEMO: updated location search for zip code for better results

Released April 30, 2012

- ADD: ability to pass a different model class to object loader when requesting data (used for normals/tides stations currently)

- ADD: animations for various control elements

- ADD: configurable settings for map legend and long-press action

- ADD: delegate handlers for disabling animation controls for overlays that don’t support it

- ADD: displaying overlay name in control view

- ADD: earthquake marker assets

- ADD: earthquakes and records point data overlays

- ADD: icons for earthquake categories

- ADD: initial support for storm cell forecast annotation callout view

- ADD: map config settings for controlling what is displayed on map control view

- ADD: map controls view, moved all animation buttons and progress views into

- ADD: missing “type” property

- ADD: missing API parameter constants

- ADD: new icons for records reports

- ADD: new object loaders and model classes

- ADD: normals models and object loaders

- ADD: permissions loader objects

- ADD: pie progress view for animation loading

- ADD: property mapping for AFSunMoon relationships

- ADD: schema/property validation in unit testing

- ADD: singleton map settings class for user-defined options

- ADD: sst and chlorophyll tile overlays

- ADD: support for map customizations (marker images, legends, animation speed, map button graphics, overlay alpha)

- ADD: support for search action in object loader

- ADD: support for sunmoon/moonphases endpoint

- ADD: tides models and object loaders

- ADD: timezone property to AFTidePeriod

- ADD: unit testing for new models

- FIX: added autoresizing mask settings to weather map view instance

- FIX: added catch to return nil for setting value if no settings file found

- FIX: animated overlay timestamp not being reset to most recent when stopping animation and switching to static view

- FIX: animation flag not being set properly when switching tile overlays

- FIX: bug where map control background view would not be resized properly when leaving map view controller then returning back to it

- FIX: bug where overlays were not re-added to the map view when resuming to interactive map controller

- FIX: bug with animation thinking it’s been loaded after previous load was cancelled, thus starting the animation without having all images

- FIX: catch to lock lat/lon to real-world bounds to prevent api request errors

- FIX: cleaned up map control view resizing animation issues

- FIX: crash if circular/point annotations didn’t exist when trying to remove from map

- FIX: crash in overlay animation when trying to add `nil` image into dictionary store

- FIX: crash when calling advance on AFOverlayAnimation and no images were successfully loaded during last queue process

- FIX: crash when rotating ipad in StaticMapViewControllerHD

- FIX: crash when starting overlay animation due to trying to remove _pointAnnotation before it was created

- FIX: crash when totalIntervals is greater than available timestamps in AFOverlayAnimation

- FIX: custom observation callout not showing loading view while data is loading

- FIX: final working version of custom annotation callout view

- FIX: initial instance of circular annotation was not animating

- FIX: issue where overlay animation loading was not cancelled properly when stopAnimatingOverlays was called from manager

- FIX: issue with animation view not being removed when zooming map using double-tap gesture

- FIX: issue with current timestamp for overlay not always being displayed in control view

- FIX: issue with legends display not using map config settings

- FIX: issue with map auto-panning back to custom callout location when deselecting (caused by didMoveToSuperview being called when removed)

- FIX: limit was being overridden in object loader request

- FIX: major bug with timers getting whacked out when starting animation loading, then canceling, then starting again

- FIX: map animation container frame not updating properly on interface orientation changes

- FIX: map animations not stopping before map region changes

- FIX: map legend not centered based on map when interface orientation changed

- FIX: memory leak in AFOverlayAnimation where core UIImageView was not being released before creating a new instance

- FIX: memory leak with map control base path

- FIX: missing alert.png icon for ipad advisories view

- FIX: overlay name/timestamp labels were being removed when turning on a point data overlay, had to add check against type of overlay added

- FIX: overlay options not properly being selected in options menu

- FIX: permissions not properly being returned

- FIX: positioning and drawing issues in custom callout view class

- FIX: positioning issue with overlay timestamp

- FIX: wrong property mapping for AFTidePeriod

- FIX: wrong property mapping on AFRecord

- MOD: added better sorting to storm cell query to plot more severe cells on top

- MOD: added circular annotation view for long press gesture for currents

- MOD: adjusted circular annotation gesture settings for better handling of slight gesture changes

- MOD: adjusted map control view elements based on device, scaled down for iPhone

- MOD: adjusted map options menu to be populated based on what user has access to

- MOD: adjusted positioning of labels on AFStormCellsTableViewCell

- MOD: adjusted progress view in/out animation

- MOD: adjusted so storm cells only plot cones if not general cell

- MOD: adjusted storm cell forecast polyline to go from current position to last forecast position instead of each individual period

- MOD: adjusted to use timer-based animation instead of UIViewImage

- MOD: final adjustments and bug fixes for long press obs feature

- MOD: in/out animation for animation progress view depending on status of weather map animations

- MOD: moved AFSun and AFMoon properties into core AFSunMoon class, removed separate classes as not needed

- MOD: moved outside of core .bundle for easier editing

- MOD: remove point data and point annotation when an animation starts, stop animation when point data is added to map

- MOD: renamed custom callout annotation views to include “callout” for better differentiation

- MOD: replaced parameter strings with constants from AFGlobals

- MOD: set sort params for storm cell and reports point data

- MOD: updated AFOverlayManager to better singleton pattern

- MOD: updated to use UILongPressGestureRecognizer for tap and hold feature

- DEMO: added detail view for record report

- DEMO: added earthquakes and normals sample listings

- DEMO: added missing weather icons

- DEMO: added moon phases sample view, adjusted category menus for new sample views

- DEMO: added sample listing view for nearby tides

- DEMO: added sample sun/moon view

- DEMO: fixed compiler warnings

- DEMO: records listing and detail views

- DEMO: removed call to initializeMap from viewDidAppear which was always reverting to radar overlay regardless of which option was selected from menu (iPhone)

- DEMO: resolved compiler warnings

- DEMO: updated so detail and forecast views update their data when app resumes from background

Released April 2, 2012

- ADD: NSString category method to format cardinal strings to all uppercase

- ADD: pop-in animation for storm report annotations

- ADD: support for new hailIN/hailMM for storm reports, added to demo app views

- MOD: AFTileOverlayView now cancels all queued requests when map region changes (prevents unnecessary requests in background…slowing the rendering of visible tiles)

- MOD: cleaned up storm report annotation/view output

- MOD: removed detail value for storm wind damage reports

- FIX: “-0” issue for temps, caused by using floats instead of integers

- FIX: additional fuzzyString method on NSDate to adjust passed timezone to nearest hour for proper day string formatting based on API response

- FIX: bug where radar and satellite overlays were not always inserted on top of overlay stack

- FIX: bug where radar overlay was not always reappearing when returning to map view

- FIX: bug with map overlays not fetching latest timestamps when data expires (prevented radar tiles from updating)

- FIX: data formatting for storm report annotation view overlays

- FIX: issue with alert.png icon not appearing in AFObservationAdvisoriesView

- FIX: minor improvements to tile overlay views, added checks to prevent same tile from being added to queue more than once

Released February 2, 2012

- ADD: additional support for setting a default timezone for static NSDateFormatter and NSCalendar instances in NSDate category methods

- ADD: some additional logging when [AerisEngine enableDebug] is true

- MOD: added time zone property to AFObservation, AFStormReport and deprecated `validTime` properties on models

- MOD: changed NSString and NSArray property declarations from “retain” to “copy”

- MOD: updated properties on AFFire to reflect latest changes in api

- FIX: forecast date issue where the actual timezone for the location was not being used (just device’s timezone was)

- FIX: memory leak of overlay instances within AFOverlayAnimation not being released property, nor object itself

- FIX: additional fuzzyString method on NSDate to adjust passed timezone to nearest hour for proper day string formatting based on API response

Released January 12, 2012

- ADD: missing model properties on AFStormCell, AFObservation, AFPlace, AFAdvisory

- ADD: support for specifying an API version for all requests in AerisEngine

- ADD: missing snow/blizzard icons in AerisUI.bundle

- ADD: custom AFScrollView class that extends UIScrollView for custom implementation eventually

- MOD: updated AFForecastDetailView to allow switching “Precip” label to “Snow” if setting snow property

- FIX: issue with some AFPlace properties not being retained properly

- FIX: ForecastPeriod storing wrong value for minTempC, gives 0 for all instances

Released December 1, 2011

- ADD: new properties in models (AFObservation, AFForecast) to match those added in the API

- ADD: end-user debugging for API requests; to enable, call [AerisEngine enableDebug] after initializing AerisEngine with your consumer key and secret

- MOD: better handling when requesting objects with invalid AFPlace instances, will not fail before attempting to request from the API

- MOD: updated AFPlace so that if a state is not provided for all US locations, the framework will see it as invalid and force object requests with that place to fail

- FIX: resolved crash that was occurring for some users when interacting with an AFWeatherMap instance due to use of objective-c blocks

Released October 21, 2011

Initial release