Pek çok konum kaydına sahip bir veritabanım var (& enlem depolama).
Yeni potansiyel kayıt geldiğinde, mevcut kayıtlardan herhangi birine 50 metre'dan daha yakınsa - bunu veritabanına eklememelidir.
Coğrafi kodlama, konum veritabanının başka konumlarına yakın olup olmadığını bilir
İki konum arasındaki mesafeyi hesaplama olanağı olduğunu biliyorum.
Fakat bunu yapabilmek için veritabanımdan tüm kayıtlarına ihtiyacım var ve döngü içinde potansiyel kaydı her mevcutla karşılaştır. Sanırım biraz zaman alacak. ve bu delta 50 metre uzaklıkta bana mesafe yarıçapı verecekti -
Ben G/azalış enlem potansiyel kaydının & boylam artırabilir bazı delta, istiyorum.
public boolean needsToBeIncluded(double newLat, double newLng) {
int delta = 0;
Cursor c = sqLiteDatabase.rawQuery("SELECT * FROM myLocations WHERE latitude between " + (newLat - delta) + " and " + (newLat + delta) +
" AND longitude between " + (newLng - delta) + " and " + (newLng + delta), null);
return c.getCount() > 0;
}
mümkün mü yoksa enlem & boylam hakkında yanlış hayal gücü var: Örneğin
, ben böyle bir şey olsun isterim? Teşekkürler.
Bulunduğunuz bölgeye/bölgeye göre yaklaşık 50x50 metrelik bir ızgara veren bir delta kesinlikle alabilirsiniz, daha sonra yalnızca bu noktaları ızgara içinde kontrol etmeniz yeterlidir. –
Lütfen bana daha fazla bilgi verin - bölgeye göre nasıl delta hesaplayın? Teşekkürler. –
Tüm mevcut noktalarınızın min ve max 'lat' değerlerini bilmeniz gerekir, çünkü her bir lat, 'lon' değerine bakılmaksızın yaklaşık 111km'ye çevrilir; bu, her bir lon'un derecesine olan uzaklığa bağlıdır. '(yani ekvatorda daha uzun ve kutup noktasında sıfırdır). Min ve maksimum enlemlerde bir lon'un ne dereceye dönüştürüleceğine bakmak için http://www.nhc.noaa.gov/gccalc.shtml adresini kullanın. Ardından minonum deltaları 50 metrede min ve maksimum enlemlerde alabilirsiniz. İki değerden daha büyük kullanın. –