Revision: 70201
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 10, 2015 03:02 by TenDegrees
Initial Code
- (void) onUnityLocations:(NSDictionary *)locations { for(NSNumber *key in [locations allKeys]) { ProfileLocation *affiliateLocation = [locations objectForKey:key]; if(![self.unityAffiliateMarkers objectForKey:key]) // the users profile and location has not been cached yet { Profile *affiliateProfile = [[Profile alloc]init]; affiliateProfile.entityId = affiliateLocation.profileId; if(!affiliateProfile.entityId==0) { [self readUnityObject:affiliateProfile withCompletionBlock:^(id object, bool success, NSString * errorMessage) { if(success) // generate a GMSMarker containing the profile object { GMSMarker *affiliateLocationMarker = [GMSMarker markerWithPosition:CLLocationCoordinate2DMake(affiliateLocation.latitude, affiliateLocation.longitude)]; affiliateLocationMarker.flat = YES; affiliateLocationMarker.zIndex = -1; affiliateLocationMarker.appearAnimation=kGMSMarkerAnimationPop; affiliateLocationMarker.groundAnchor = CGPointMake(0.5, 0.5); [affiliateLocationMarker setUserData:((Profile *)object)]; // this sets the profile to the marker affiliateLocationMarker.icon= [TenDegreesHelpers roundImageCorners:[self applyAlpha:1 toImage:[self image:[TenDegreesHelpers stringToUIImage:((Profile *)object).icon] scaledToSize:CGSizeMake(30.0f, 30.0f)]]]; if(![self.unityAffiliateMarkers objectForKey:key]) // check again to prevent duplicate locations { affiliateLocationMarker.map=self.googleMap; [self.unityAffiliateMarkers setObject:affiliateLocationMarker forKey:key]; } } else { NSLog(@"%@",errorMessage); } }]; } } else // users location and profile are already cached - just update their location on the map { GMSMarker *affiliateLocationMarker = [self.unityAffiliateMarkers objectForKey:key]; [affiliateLocationMarker setPosition:CLLocationCoordinate2DMake(affiliateLocation.latitude, affiliateLocation.longitude)]; } } for(NSNumber *key in [self.unityAffiliateMarkers allKeys]) { if(![locations objectForKey:key]) // remove any markers of users who have logged out or timed out { GMSMarker *affiliateLocationMarker = [self.unityAffiliateMarkers objectForKey:key]; affiliateLocationMarker.map=nil; [self.unityAffiliateMarkers removeObjectForKey:key]; } } [_extendUpdateDelegate onLocations:locations]; }
Initial URL
Initial Description
How to manage and update user locations using the onUnityLocations delegate.
Initial Title
Updating, Managing, and Displaying User Locations
Initial Tags
user
Initial Language
Objective C