I changed the way I update annotations on the map to simply removing them all and then re-loading them all whenever I re-enter the map to "map the code simpler". I left the more complex code that only adds and removes the ones that were updated, but this could become more of a problem when I have an entire database depending on how I deal with the local data (i.e. the user) vs. the server data (i.e. the database). The user data will be in the database, but what if they want to view the map without internet access? - should they be able to see their own points (i.e. should i load the local data AND the database data (should I worry about duplicates then?)) or not (i.e. only load the database data).