我需要發現哪個是主列表中它的項目具有經度和緯度的更接近的項目。我遇到了這個腳本,我用它來返回公里的距離......但是返回的項目不是更接近的項目......有人知道它爲什麼不起作用嗎?十分感謝! 我正在使用xamarin表單c# 我的英語不太好,對不起。試圖用C獲得距離#
public static Loja EncontraLojaPerto(List<Loja> lojaList, double lat1,
double lon1, char unit)
{
Loja lojaProxima = new Loja();
double distAuxiliar = -1;
foreach (var item in lojaList)
{
double lat2 = Convert.ToDouble(item.latitude.Replace('.',','));
double lon2 = Convert.ToDouble(item.longitude.Replace('.',','));
Func<double, double> deg2Rad = (x) => (x * (Math.PI/180));
Func<double, double> rad2Deg = (x) => (x/Math.PI * 180.0);
var theta = lon1 - lon2;
var dist = Math.Sin(deg2Rad(lat1)) * Math.Sin(deg2Rad(lat2)) + Math.Cos(deg2Rad(lat1)) * Math.Cos(deg2Rad(lat2)) * Math.Cos(deg2Rad(theta));
dist = Math.Acos(dist);
dist = rad2Deg(dist);
dist = dist * 60 * 1.1515;
switch (unit)
{
case 'K':
dist = dist * 1.609344;
break;
case 'N':
dist = dist * 0.8684;
break;
}
//verificando se essa pode ser a distância menor
int retval = distAuxiliar.CompareTo(dist);
if (retval > 0 || distAuxiliar.Equals(-1))
{
distAuxiliar = dist;
lojaProxima = item;
}
}
return lojaProxima;
}
我正在尋找答案,我發現它:在這裏,在巴西,我們使用','來代替'。和'。'相反','...然後,我的web服務給我一個數字與'。'當我需要一個',',然後我用。替換'。',但是,當我使用它時,數字會改變它的字符數量(如果它是123.4300,現在它是123,43)...當我使用的替換,數字工作,但foreach永遠不會完成,我永遠不會到達「返回」線...
你有沒有試圖調試過這一切?對於列表中的每個項目,驗證距離calc返回正確的值。然後,一旦你證實了這一點,找出爲什麼距離比較返回錯誤的項目。 – Jason
我正在做它.. –
我使用其他iternet代碼關於它和結果總是相同的錯誤項目...我認爲有一些關於這種方法,我不知道 –