просто поместите объявление массива вне цикла
double[,] lonlat = new double[trk.Segs.Length, 2];
for (int i=0; i<trk.Segs.Length; i++) {
lonlat[i,0] = Convert.ToDouble(trk.Segs[i].Longitude);
lonlat[i,1] = Convert.ToDouble(trk.Segs[i].Latitude);
}
также есть одна маленькая ошибка: у массива нет метода Add, он поддерживает только индексированный доступ, поэтому, если вы напишите
arr = { { lon, lat } }
в цикле, он всегда будет переназначать новый массив вашей переменной, так что это также не имеет смысла.в моем примере lon и lat добавляются через индексы