Piccolo tip per i programmatori. La funzione qui sotto permette calcolare la regione di coordinate (coppia di coordinate max e min) realizzata a
partire da un punto (lat,long) e che si estende per un dato raggio. I parametri richiesti sono molto semplici e, nell’ordine, descrivono il centro della regione e il raggio. Il terzoparametro si occupa di manipolare, qualora fosse necessario, le coordinate espresse in kilometri o miglia.
</p> <p>+ (CGRadius) coveredRegionWithCenter:(CLLocationCoordinate2D) center radius:(CGFloat) regradius inKilometers:(BOOL) unitAsKm {</p> <p>CGRadius region;</p> <p>region.center = center;</p> <p>// unit conversion if needed</p> <p>CGFloat radius = (unitAsKm ? (regradius*0.621371192) : regradius);</p> <p>CGFloat dpmLAT = (1 / 69.1703234283616);</p> <p>// latitude calculation</p> <p>CGFloat usrRLAT = dpmLAT * radius;</p> <p>// longitude calculation</p> <p>CGFloat mpdLON = 69.1703234283616 * cos(center.latitude * (M_PI/180));</p> <p>CGFloat dpmLON = 1 / mpdLON;</p> <p>CGFloat usrRLON = dpmLON * radius;</p> <p>region.minCoordinate.latitude = center.latitude - usrRLAT;</p> <p>region.minCoordinate.longitude = center.longitude - usrRLON;</p> <p>region.maxCoordinate.latitude = center.latitude + usrRLAT;</p> <p>region.maxCoordinate.longitude = center.longitude + usrRLON;</p> <p>return region;</p> <p>}</p> <p>
Una funzione del genere può essere utile nel caso in cui si debbano verificare quali punti di coordinate di un insieme sono all’interno del raggio proposto. Il risultato della funzione è una struttura C CGRadius definita come:
</p> <p>typedef struct</p> <p>{</p> <p>CLLocationCoordinate2D center;</p> <p>CLLocationCoordinate2D minCoordinate;</p> <p>CLLocationCoordinate2D maxCoordinate;</p> <p>} CGRadius;</p> <p>