2011-04-05 18 views
5

Bu, ilk kez bir soru gönderiyor, ancak diğer kişilerin sorularına çok fazla yardım buldum.-distance içinde CLLocation nesnelerinin sırasıFLocation:

Soruma CLLocation adresindeki -distanceFromLocation: işlevini ifade eder. A noktasından B noktasına kadar olan noktayı bulmanın B noktası ve A noktası arasındaki ile aynı olduğunu düşünürdüm, ama olmadığını buldum. Ben çok basit bir durumda bu test ettik: Buna

CLLocation *test1 = [[CLLocation alloc] initWithLatitude:37.529530 longitude:-122.259232]; 
CLLocation *test2 = [[CLLocation alloc] initWithLatitude:47.900002 longitude:-103.495102]; 
NSLog(@"%f vs %f",[test2 distanceFromLocation:test1],[test1 distanceFromLocation:test2]); 
[test1 release]; 
[test2 release]; 

çıkış 1907269,942754 vs 1.908.105,959114 neredeyse 900 metre fark oldu.

900 metre küçük bir yüzde olsa da, kullanıcının bir ek açıklamadan başka bir şeye daha yakın olup olmadığını belirlemeye çalışıyorum ve 900 metre bunu değiştirebilir.

Benim sorum şu ki, bu değerlerden hangisi doğruysa? Ayrıca, hangi noktayı test ettiğim önemliyse, her zaman aynı yere karşı test etmem gerekiyor mu (ör. Kullanıcı, hedefe, hedefe ve hedefe açıklama eklenmesi yerine hedefe ve ek açıklamaya)?

Örneğim, projem oldukça büyük olduğu için bu sorunun biraz bozuk olduğunu ve bu durumun sorunumu gösterdiğinden üzgünüz. Herhangi bir yardım, bu bana biraz kafa karışıklığı ve hayal kırıklığı yarattığı için takdir edilecektir.

cevap

1

Gözlemlediğiniz hata, 2000 yılında 1 bölümdür. Bu yöntemde kullanılan algoritma, hız için optimize edilmiştir, bu nedenle uzaklıktaki konumların bir listesini, milimetreye göre değil, hızlı bir şekilde sıralamak mümkündür.

Doğru sonuçlara ihtiyacınız varsa, bu yöntemleri kullanmayın, başka bir yol bulun. Tekrar üretilebilir sonuçlara ihtiyacınız varsa, argümanları belirli bir şekilde, örn. her zaman alt enlemden başlar.